|
@@ -0,0 +1,42 @@
|
|
|
+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})
|
|
|
+
|