Files
wechatAiclaw/backend/qwen_client.py
2026-03-11 00:22:41 +08:00

42 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- 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}])