combine multiple system instructions into one

This commit is contained in:
Toddy
2025-03-14 02:55:29 +00:00
parent 71af1db330
commit 16c28bf1ba
2 changed files with 44 additions and 14 deletions
+34 -12
View File
@@ -36,18 +36,40 @@ async def list_models(_=Depends(security_service.verify_key),
api_key = await key_manager.get_next_working_key() api_key = await key_manager.get_next_working_key()
logger.info(f"Using API key: {api_key}") logger.info(f"Using API key: {api_key}")
models_json = model_service.get_gemini_models(api_key) models_json = model_service.get_gemini_models(api_key)
models_json["models"].append({"name": "models/gemini-2.0-flash-exp-search", "version": "2.0",
"displayName": "Gemini 2.0 Flash Search Experimental", # 模型名称以及对应的详细信息
"description": "Gemini 2.0 Flash Search Experimental", "inputTokenLimit": 32767, model_mapping = {x.get("name", "").split("/", maxsplit=1)[1]: x for x in models_json["models"]}
"outputTokenLimit": 8192,
"supportedGenerationMethods": ["generateContent", "countTokens"], "temperature": 1, # 添加搜索模型
"topP": 0.95, "topK": 64, "maxTemperature": 2}) if settings.MODEL_SEARCH:
models_json["models"].append({"name": "models/gemini-2.0-flash-exp-image", "version": "2.0", for name in settings.MODEL_SEARCH:
"displayName": "Gemini 2.0 Flash Image Experimental", model = model_mapping.get(name, None)
"description": "Gemini 2.0 Flash Image Experimental", "inputTokenLimit": 32767, if not model:
"outputTokenLimit": 8192, continue
"supportedGenerationMethods": ["generateContent", "countTokens"], "temperature": 1,
"topP": 0.95, "topK": 64, "maxTemperature": 2}) item = deepcopy(model)
item["name"] = f"models/{name}-search"
display_name = f'{item.get("displayName")} For Search'
item["displayName"] = display_name
item["description"] = display_name
models_json["models"].append(item)
# 添加图像生成模型
if settings.MODEL_IMAGE:
for name in settings.MODEL_IMAGE:
model = model_mapping.get(name, None)
if not model:
continue
item = deepcopy(model)
item["name"] = f"models/{name}-image"
display_name = f'{item.get("displayName")} For Image'
item["displayName"] = display_name
item["description"] = display_name
models_json["models"].append(item)
return models_json return models_json
+10 -2
View File
@@ -34,7 +34,7 @@ class OpenAIMessageConverter(MessageConverter):
def convert(self, messages: List[Dict[str, Any]]) -> tuple[List[Dict[str, Any]], Optional[Dict[str, Any]]]: def convert(self, messages: List[Dict[str, Any]]) -> tuple[List[Dict[str, Any]], Optional[Dict[str, Any]]]:
converted_messages = [] converted_messages = []
system_instruction = None system_instruction_parts = []
for idx, msg in enumerate(messages): for idx, msg in enumerate(messages):
role = msg.get("role", "") role = msg.get("role", "")
@@ -64,8 +64,16 @@ class OpenAIMessageConverter(MessageConverter):
if parts: if parts:
if role == "system": if role == "system":
system_instruction = {"role": "system", "parts": parts} system_instruction_parts.extend(parts)
else: else:
converted_messages.append({"role": role, "parts": parts}) converted_messages.append({"role": role, "parts": parts})
system_instruction = (
None
if not system_instruction_parts
else {
"role": "system",
"parts": system_instruction_parts,
}
)
return converted_messages, system_instruction return converted_messages, system_instruction