DigitalBookWriting.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from colorama import Fore
  2. from camel.societies import RolePlaying
  3. from camel.utils import print_text_animated
  4. from camel.models import ModelFactory
  5. from camel.types import ModelPlatformType
  6. from dotenv import load_dotenv
  7. import os
  8. load_dotenv()
  9. LLM_API_KEY = os.getenv("LLM_API_KEY")
  10. LLM_BASE_URL = os.getenv("LLM_BASE_URL")
  11. LLM_MODEL = os.getenv("LLM_MODEL")
  12. #创建模型,在这里以Qwen为例,调用的百炼大模型平台API
  13. model = ModelFactory.create(
  14. model_platform=ModelPlatformType.QWEN,
  15. model_type=LLM_MODEL,
  16. url=LLM_BASE_URL,
  17. api_key=LLM_API_KEY
  18. )
  19. # 定义协作任务
  20. task_prompt = """
  21. 创作一本关于"拖延症心理学"的短篇电子书,目标读者是对心理学感兴趣的普通大众。
  22. 要求:
  23. 1. 内容科学严谨,基于实证研究
  24. 2. 语言通俗易懂,避免过多专业术语
  25. 3. 包含实用的改善建议和案例分析
  26. 4. 篇幅控制在8000-10000字
  27. 5. 结构清晰,包含引言、核心章节和总结
  28. """
  29. print(Fore.YELLOW + f"协作任务:\n{task_prompt}\n")
  30. # 初始化角色扮演会话
  31. role_play_session = RolePlaying(
  32. assistant_role_name="心理学家",
  33. user_role_name="作家",
  34. task_prompt=task_prompt,
  35. model=model
  36. )
  37. print(Fore.CYAN + f"具体任务描述:\n{role_play_session.task_prompt}\n")
  38. # 开始协作对话
  39. chat_turn_limit, n = 30, 0
  40. input_msg = role_play_session.init_chat()
  41. while n < chat_turn_limit:
  42. n += 1
  43. assistant_response, user_response = role_play_session.step(input_msg)
  44. print_text_animated(Fore.BLUE + f"作家:\n\n{user_response.msg.content}\n")
  45. print_text_animated(Fore.GREEN + f"心理学家:\n\n{assistant_response.msg.content}\n")
  46. # 检查任务完成标志
  47. if "CAMEL_TASK_DONE" in user_response.msg.content:
  48. print(Fore.MAGENTA + "✅ 电子书创作完成!")
  49. break
  50. input_msg = assistant_response.msg
  51. print(Fore.YELLOW + f"总共进行了 {n} 轮协作对话")