oT(Chain of Thought) :在解决复杂的语言相关任务(如问答系统、文本生成等)时,通过一系列连贯的中间推理步骤来生成最终答案。这种连贯的中间步骤就像人的思维过程一样,是一个逻辑上连贯的 “链”。
Few-Shot CoT:在提示中给出一两个示例,然后在示例中写清楚推导的过程。
思维链存在的意义:思维链引导AI从理解问题,到搜索信息,再到生成结果。不仅使AI的推理过程更加清晰,也使得生成的销售列表更加符合用户的需求。
Few-Shot CoT与Zero-Shot CoT:Few-Shot CoT,指的就是在带有示例的提示过程中,加入思考的步骤,从而引导模型给出更好的结果。而Zero-Shot CoT,就是直接告诉模型要一步一步地思考,慢慢地推理。
代码实现:
- 导入操作系统模块,设置环境变量api和密钥,以便能够使用GPT模型
- 导入chatopenAI类,创建一个 ChatOpenAI 类的实例,并将其赋值给变量 llm,设置随机度(temperature),后续就可以使用这个 llm 实例去调用模型进行文本生成等相关任务了
- 设定AI的角色和目标,创建role_template(虽然不是必须的,但是这有助于引导 AI 站在特定的专业角色角度来为客户提供服务、给出合适的建议;cot_template则更多侧重于解释推理过程和示例展示)
- 关键部分:创建一个思维链模板(cot_template),模板包含生成回复的推理过程,以及一些推理示例。
- 导入聊天模型类,传递人类问题的humanmessageprompttemplate类,系统消息提示类;
- 基于给定的模板(role_template和cot_template)各创建一个系统消息提示对象
- 接收用户询问。
human_template = "{human_input}":定义了一个字符串模板,其中 {human_input} 是一个占位符,在后续构建提示信息并与语言模型交互的过程中,这个占位符会被实际的用户输入内容所替换。 加工:human_prompt = HumanMessagePromptTemplate.from_template(human_template)from_template方法会基于传入human_template模版,将其转换为符合langchain框架要求、能够被识别并作为人类消息发送给语言模型的一种格式化的模板对象,然后将这个对象赋值给human_prompt变量。 - 将以上所有信息结合为一个聊天提示
chat_prompt = ChatPromptTemplate.from_messages([system_prompt_role, system_prompt_cot, human_prompt])这行代码的作用是把之前分别构建好的不同类型的消息模板(包含系统消息模板system_prompt_role、带有解释推理及示例的系统消息模板system_prompt_cot,以及代表用户询问的人类消息模板human_prompt)整合在一起,形成一个完整的聊天提示(ChatPromptTemplate)对象,以便后续将其格式化后发送给llm,引导语言模型基于这些给定的上下文和要求来生成相应的回复内容。 - 输入提示,打印回答。
ToT框架————思维链进化为思维树:旨在模拟人类在解决复杂问题时的思考过程,它不像传统方法那样只是直接生成一个答案,而是构建出一个类似树状的思维结构,从问题出发,逐步拓展出多个思考分支,每个分支代表一种可能的推理思路或解决方案路径,然后通过对这些分支进行评估、探索和比较,最终找到最优或较为合理的答案。 ToT 框架为每个任务定义具体的思维步骤和每个步骤的候选项数量。