123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import os
- from openai import OpenAI
- from dotenv import load_dotenv
- load_dotenv()
- API_KEY = os.getenv("BAILIAN_API_KEY")
- BASE_URL = os.getenv("BAILIAN_API_BASE_URL")
- MODEL_NAME = "qwen3-32b" # 按实际支持的模型名填写
- client = OpenAI(base_url=BASE_URL, api_key=API_KEY)
- system_prompt = (
- "你是一个信息收集助手,需要和用户多轮对话,收集用户的姓名、年龄和感兴趣的行业。"
- "请严格按照顺序提问:先问姓名,再问年龄,再问行业。"
- "用户如果输入无关内容,请提醒用户先完成信息收集,不要回答无关问题。"
- "用户如果拒绝回答(如‘不告诉你’),请礼貌提醒必须填写。"
- "收集完毕后请总结结果。"
- )
- if __name__ == "__main__":
- # OpenAI Python SDK 1.x 及兼容API,messages为list[dict]即可
- history = [
- {"role": "system", "content": system_prompt}
- ]
- while True:
- # 若仍有类型报错,建议升级openai库到1.0以上
- response = client.chat.completions.create(
- model=MODEL_NAME,
- messages=history,# type: ignore
- extra_body={"enable_thinking": False},
- )
- content = response.choices[0].message.content
- ai_reply = content.strip() if content else "[无回复内容]"
- print(f"AI: {ai_reply}")
- # 判断是否收集完毕
- if ("信息收集完成" in ai_reply) or ("收集完毕" in ai_reply) or ("结果" in ai_reply and "姓名" in ai_reply and "年龄" in ai_reply and "行业" in ai_reply):
- break
- history.append({"role": "assistant", "content": ai_reply})
- user_input = input("User: ").strip()
- history.append({"role": "user", "content": user_input})
|