fix:优化界面
This commit is contained in:
41
backend/qwen_client.py
Normal file
41
backend/qwen_client.py
Normal file
@@ -0,0 +1,41 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""千问(Qwen)模型调用:读取配置文件中的 API Key,使用 OpenAI 兼容接口。"""
|
||||
import logging
|
||||
import os
|
||||
from typing import List, Optional
|
||||
|
||||
logger = logging.getLogger("wechat-backend.qwen")
|
||||
|
||||
# 优先 QWEN_API_KEY,其次 DASHSCOPE_API_KEY,最后 APIKEY(.env 中可配置千问 key)
|
||||
QWEN_API_KEY = os.getenv("QWEN_API_KEY") or os.getenv("DASHSCOPE_API_KEY") or os.getenv("APIKEY")
|
||||
QWEN_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
|
||||
QWEN_MODEL = os.getenv("QWEN_MODEL", "qwen-turbo")
|
||||
|
||||
|
||||
async def qwen_chat(messages: List[dict], api_key: Optional[str] = None) -> Optional[str]:
|
||||
"""调用千问对话,返回 assistant 回复文本。messages 格式 [{"role":"user","content":"..."}] 或含 system。"""
|
||||
key = api_key or QWEN_API_KEY
|
||||
if not key:
|
||||
logger.warning("No QWEN_API_KEY / APIKEY in env, skip qwen call")
|
||||
return None
|
||||
try:
|
||||
from openai import AsyncOpenAI
|
||||
client = AsyncOpenAI(api_key=key, base_url=QWEN_BASE_URL)
|
||||
r = await client.chat.completions.create(model=QWEN_MODEL, messages=messages)
|
||||
text = r.choices[0].message.content if r.choices else None
|
||||
return text
|
||||
except Exception as e:
|
||||
logger.exception("qwen_chat error: %s", e)
|
||||
return None
|
||||
|
||||
|
||||
async def generate_greeting(remark_name: str, region: str = "", tags: List[str] = None) -> Optional[str]:
|
||||
"""根据客户备注、地区、标签生成一句简短个性化问候语。"""
|
||||
tags = tags or []
|
||||
user = f"请生成一句简短的微信问候语(1-2句话),客户备注名:{remark_name}"
|
||||
if region:
|
||||
user += f",地区:{region}"
|
||||
if tags:
|
||||
user += f",标签:{','.join(tags)}"
|
||||
user += "。不要解释,只输出问候语本身。"
|
||||
return await qwen_chat([{"role": "user", "content": user}])
|
||||
Reference in New Issue
Block a user