mirror of
https://github.com/snailyp/gemini-balance.git
synced 2026-09-04 23:19:17 +08:00
combine multiple system instructions into one
This commit is contained in:
+34
-12
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user