feature: 修改api url,key model为可配置
This commit is contained in:
20
app.py
20
app.py
@@ -25,8 +25,8 @@ app = FastAPI(
|
||||
|
||||
# OpenRouter API 配置
|
||||
OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY")
|
||||
OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions"
|
||||
MODEL_NAME = os.getenv("OPENROUTER_MODEL", "qwen/qwen3-vl-8b-instruct") # 可通过环境变量配置
|
||||
OPENROUTER_API_URL = os.getenv("OPENROUTER_API_URL")
|
||||
MODEL_NAME = os.getenv("OPENROUTER_MODEL") # 可通过环境变量配置
|
||||
|
||||
if not OPENROUTER_API_KEY:
|
||||
raise ValueError("请设置 OPENROUTER_API_KEY 环境变量")
|
||||
@@ -52,6 +52,10 @@ def encode_image_to_base64(image: Image.Image) -> str:
|
||||
|
||||
async def call_openrouter_api(image_base64: str, user_message: str) -> str:
|
||||
"""调用 OpenRouter API"""
|
||||
print()
|
||||
print(f"调用 OpenRouter API: {MODEL_NAME}")
|
||||
print(f"用户消息: {user_message} {OPENROUTER_API_KEY}")
|
||||
|
||||
headers = {
|
||||
"Authorization": f"Bearer {OPENROUTER_API_KEY}",
|
||||
"Content-Type": "application/json",
|
||||
@@ -64,7 +68,7 @@ async def call_openrouter_api(image_base64: str, user_message: str) -> str:
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "你是一位专业的农业病虫害识别专家。请仔细分析用户提供的植物图片,识别可能存在的病虫害问题,并提供详细的诊断信息,包括:1. 病虫害类型和名称 2. 严重程度 3. 可能的病因 4. 防治建议。请用中文回答。"
|
||||
"content": "你是一位专业的农业病虫害识别专家。请仔细分析用户提供的植物图片,识别可能存在的病虫害问题,并提供详细的诊断信息,包括:1. 植物类型,病虫害类型和名称 2. 严重程度 3. 可能的病因 4. 防治建议。请用中文回答。"
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
@@ -84,13 +88,19 @@ async def call_openrouter_api(image_base64: str, user_message: str) -> str:
|
||||
],
|
||||
"max_tokens": 2000,
|
||||
"temperature": 0.7,
|
||||
"chat_template_kwargs": {
|
||||
"enable_thinking": False
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
async with httpx.AsyncClient(timeout=60.0) as client:
|
||||
try:
|
||||
response = await client.post(OPENROUTER_API_URL, json=payload, headers=headers)
|
||||
response.raise_for_status()
|
||||
result = response.json()
|
||||
print(result)
|
||||
|
||||
if "choices" in result and len(result["choices"]) > 0:
|
||||
return result["choices"][0]["message"]["content"]
|
||||
@@ -213,8 +223,8 @@ async def identify_pest_disease_base64(request: Base64ImageRequest):
|
||||
if not base64_str:
|
||||
raise ValueError("Base64 字符串为空")
|
||||
image_data = base64.b64decode(base64_str, validate=True)
|
||||
except binascii.Error as decode_error:
|
||||
raise ValueError(f"Base64 解码失败: 无效的 base64 格式")
|
||||
except binascii.Error:
|
||||
raise ValueError("Base64 解码失败: 无效的 base64 格式")
|
||||
except Exception as decode_error:
|
||||
error_msg = str(decode_error)
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user