test2-1.py 1.7 KB

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