LangChain Ollama实战文献检索助手(三)思维链COT、思维树TOT和思维网NOT

大模型的思考方式有时候并不尽人意。我们可以在提示词中引导大模型如何拆分任务,按部就班地思考。

一、思维链

思维链是引导模型一步一步地思考,分为Zero-Shot CoT和Few-Shot CoT。Zero-Shot CoT就是著名的Let’s think step by step。Few-Shot CoT是对提示模版中的示例进行拆解,逐步思考。
思维链的开山之作发在NIPS上
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
在这里插入图片描述
论文中给了几个示例,其实就像是写题解的风格一样。
在这里插入图片描述

这是我在给文献检索助手写的提示词

from langchain.prompts import PromptTemplate
from langchain_ollama.llms import OllamaLLM
from langchain.output_parsers import StructuredOutputParser, ResponseSchema
import pandas as pd
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.prompts.example_selector import SemanticSimilarityExampleSelector
from langchain.prompts import FewShotPromptTemplate
from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate
from langchain_ollama import ChatOllama
from langchain_core.messages import AIMessage# 设定 AI 的角色和目标
role_template = "你是一位专业的导师。你的目标是通过阅读某个领域的重要和前沿文献,帮助你的学生更好地理解这个领域的研究现状、有潜力的研究方向和就业前景。"# CoT 的关键部分,AI 解释推理过程,并加入一些先前的对话示例(Few-Shot Learning)
cot_template = """
作为一个负责任的专业的导师,我的目标是帮助我的学生了解这个领域的研究现状、有潜力的研究方向和就业前景。 我会按部就班的思考,先理解学生想了解的领域,然后考虑该领域在著名期刊会议上的论文和综述,最后根据文献调研情况,给出我的文献综述。示例 1:人类:我想了解张量分解。AI:首先,我理解你对张量分解领域感兴趣。在这个领域,最近的研究主要集中在如何寻找更优的张量分解形式,例如张量环分解、张量网络分解等。这些方法在处理高维数据和复杂关系时表现出色。我会查阅最新的顶级期刊和会议论文,如Nature,TPAMI,TIP,NIPS等,为你提供一份关于张量分解研究现状的综述,并且给你推荐文章。在此基础上。我会分析张量分解未来富有研究前景的、适合发论文的几个方向。最后,我会分析现在公司对于张量分解的应用需求,综合分享张量分解的就业情况和大致薪资。示例 2:人类:我想了解异常检测。AI:首先,我理解你的对异常检测领域感兴趣。在这个领域,最近的研究主要集中在如何在大数据和大模型时代,寻找更优的异常检测算法,例如脑电信号的异常检测、无线感知的异常检测、有监督的异常检测、基于大模型的异常检测等。这些方法利用了现如今可以收集到以前无法大规模采集的数据、以及模型在其它异常检测领域数据上学到的知识,使得异常检测算法可以应用在新数据领域、小样本数据上。我会查阅最新的顶级期刊和会议论文,如Nature,TPAMI,TIP,CVPR等,给你推荐文章。为你提供一份关于异常检测研究现状的综述。在此基础上。我会分析异常检测未来富有研究前景的、适合发论文的几个方向。最后,我会分析现在公司对于异常检测的应用需求,综合分享异常检测的就业情况和大致薪资。
"""## 模型
model = ChatOllama(model='qwen2.5:3b',temperature=0)# 用户的询问
human_message = "我想了解大模型轻量化部署。"messages = [("system",role_template+cot_template,),("human", human_message),
]res = model.invoke(messages)
print(res.content)

二、思维树

思维树发表在2023的NIPS上
Tree of Thoughts: Deliberate Problem Solving with Large Language Models
代码地址
在这里
查看它的提示词设计,以扑克牌算24点为例
在这里插入图片描述
在这里插入图片描述
可以看到,它基本上是结合了COT和判断者
在这里插入图片描述
简单的实现。效果并不好,许多导师的回答是一模一样的。原因是把多种角色都放在一个prompt里了。效果更好的做法应该是把每个阶段性的输出都打个分,然后再筛选,再投进大模型。

from langchain.prompts import PromptTemplate
from langchain_ollama.llms import OllamaLLM
from langchain.output_parsers import StructuredOutputParser, ResponseSchema
import pandas as pd
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.prompts.example_selector import SemanticSimilarityExampleSelector
from langchain.prompts import FewShotPromptTemplate
from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate
from langchain_ollama import ChatOllama
from langchain_core.messages import AIMessage# 设定 AI 的角色和目标
role_template = "你是一组专业的导师团队。你的目标是通过阅读某个领域的重要和前沿文献,帮助你的学生更好地理解这个领域的研究现状、有潜力的研究方向和就业前景。"# CoT 的关键部分,AI 解释推理过程,并加入一些先前的对话示例(Few-Shot Learning)
tot_template = """
假设有五个不同的导师来分析这个科研领域。
所有的导师都会写下他们认为的这个领域的重要文献和前沿文献,包括他们对应的著作单位、发表刊物和时间。
然后,有五位审稿人对这些文献进行评价,包括对这些文献的重要性、创新性、实用性和可读性的评价。受到超过三位审稿人反对的导师,将停止作答。
然后,剩下的导师将对审稿人给予高度评价的文献进行分析,综合论述该领域的研究现状。
然后,五位审稿人对导师的综合论述进行评价,包括对导师的论述的逻辑性、全面性、深度和清晰度的评价。受到超过三位审稿人反对的导师,将停止作答。
然后,剩下的导师将结合当下的热点,提出这个领域有潜力的研究方向。
然后,五位审稿人将对导师提出的研究方向进行评价,包括对研究方向的创新性、实用性、可行性和前瞻性的评价。受到超过三位审稿人反对的导师,将停止作答。
然后,五位公司招聘者将对在导师提出的这几个研究方向做出卓越成就的博士生进行评估,给出自己对各个研究方向博士的预期薪资待遇。
想了解的领域如下:
"""## 模型
model = ChatOllama(model='qwen2.5:3b',temperature=0)# 用户的询问
human_message = "我想了解张量分解。"messages = [("system",role_template+tot_template,),("human", human_message),
]res = model.invoke(messages)
print(res.content)

思维网

待更ing

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/466117.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP页面改为UTF-8编码后,刷新页面不定时中文输出乱码终极解决方案

IIS7下的ASP页面,改为Utf-8编码后,Html部分的中文显示正常,但是由 Response.Write 输出的中文字符,在不特定的时间会变成乱码,一开始以为是浏览器问题,测试了多个浏览器故障依旧不定时出现: &l…

Spring底层源码(一)

Spring的入门代码: public class XmlTest {public static void main(String[] args) {//构造一个容器.ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext("springTest.xml");//从容器中获取Bean对象UserService userService …

理解Web登录机制:会话管理与跟踪技术解析(二)-JWT令牌

JWT令牌是一种用于安全地在各方之间传递信息的开放标准,它不仅能够验证用户的身份,还可以安全地传递有用的信息。由于其结构简单且基于JSON,JWT可以在不同的系统、平台和语言间无缝传递,成为现代Web开发中不可或缺的一部分。 文章…

SpringBoot源码解析(二):引导上下文DefaultBootstrapContext

SpringBoot源码系列文章 SpringBoot源码解析(一):SpringApplication构造方法 SpringBoot源码解析(二):引导上下文DefaultBootstrapContext 目录 前言一、入口二、DefaultBootstrapContext1、BootstrapRegistry接口2、BootstrapContext接口3、DefaultBo…

运维高可用架构设计

一、硬件 1、服务器 2、网络架构 二、软件 1、基础组件 组件名称 高可用方式 最少节点数 负载均衡(Tenginx) corsyncpacemaker互为主备 多组集群通过DNS轮循实现一个大集群 2DNS主从集群2RabbitMQ原生HA镜像集群3Zookeeper原生分布式集群3Kafka原生分布式集群3ES原生分布式集…

C++之vector类的模拟实现

片头 嗨~小伙伴们&#xff0c;今天我们来一起学习关于C的vector类的模拟实现&#xff0c;准备好了吗&#xff1f;咱们开始咯~ 一、基本框架 namespace bit {template<class T>class vector {public:typedef T* iterator;typedef const T* const_iterator;// 针对const修…

MyBatis 返回 Map 或 List<Map>时,时间类型数据,默认为LocalDateTime,响应给前端默认含有‘T‘字符

一、问题 MyBatis 返回 Map 或 List时&#xff0c;时间类型数据&#xff0c;默认为LocalDateTime Springboot 响应给前端的LocalDateTime&#xff0c;默认含有’T’字符&#xff0c;如何统一配置去掉 二、解决方案 1、pom.xml 增加依赖&#xff08;2024.11.6 补充&#xff…

数据结构之二叉树前序,中序,后序习题分析(递归图)

1.比较相同的树 二叉树不能轻易用断言&#xff0c;因为树一定有空 2.找结点值 3.单值二叉树 4.对称二叉树 5.前序遍历

如何使用gewe开发微信机器人

[Gewe](微信管理系统)&#xff0c;个人微信**开源框架&#xff0c;支持二次开发、任意语言都可接入&#xff0c;Restful API接入。 gewe框架优势&#xff1a; - 简单易用&#xff0c;无接入难度&#xff0c;区别于其它开源项目&#xff0c;本框架无需用户安装电脑微信&#x…

vue3 基于element-plus进行的一个可拖动改变导航与内容区域大小的简单方法

1、先上个截图&#xff1a; 说明&#xff1a;拖动上面的分隔栏就可以实现&#xff0c;改变左右区域的大小。 2、上面的例子来自官网的&#xff1a; Container 布局容器 | Element Plus 3、拖动的效果来自&#xff1a; https://juejin.cn/post/7029640316999172104#heading-1…

Excel 无法打开文件

Excel 无法打开文件 ‘新建 Microsoft Excel 工作表.xlsx",因为 文件格式或文件扩展名无效。请确定文件未损坏&#xff0c;并且文件扩展名与文件的格式匹配。

K8S node节点没有相应的pod镜像运行故障处理办法

查看从节点状态 kubectl describe node k8s-node1以下是报错提示 解决办法 需要处理node1节点上的磁盘空间&#xff0c;磁盘空间需要在85%内 处理后的状态 处理正常

使用代理时Stable Diffusion无法正常下载各类模型的解决办法

最近发现了 Stable Diffusion 这个好玩的ai绘画工具&#xff0c;不得不感叹现在ai工具已经进化到这么简单易用的程度&#xff0c;只要下载对应的模型就可以生成各种有意思的图片 就算你没有编程基础&#xff0c;跟着教程也能弄出来 不过使用过程中发现部分功能无法使用 查看日…

GODOT 4 不用scons编译cpp扩展的方法

以terrain3d插件&#xff0c;Godot_v4.3 为例&#xff1a; 下载下来&#xff0c;先用scons编译一遍通过后&#xff0c;整个占用1GB&#xff0c;obj文件都生成在源码旁边&#xff0c;够乱。 scons 是跨平台的构建工具&#xff0c;但是需要需要写python脚本。流程比较莫名其妙…

Python 学习完基础语法知识后,如何进一步提高?

入门Python后&#xff0c;就可以拿些小案例练手了&#xff0c;这时候千万不要傻乎乎地成天啃语法书。 编程是一门实践的手艺&#xff0c;讲究孰能生巧。不管是去手撸算法、或者照葫芦画瓢写几个小游戏都可以让你的Python突飞猛进。 之前看github比较多&#xff0c;推荐给大家…

基于Java的简单图书管理系统的实现(增删改查)

基于Java的简单图书管理系统的实现&#xff08;增删改查&#xff09; package com.situ.lib;public class Book {//对象&#xff1a;书-----定义书的属性:private String name;private String isbn;private String author;private double price;//无参构造方法&#xff1a;pub…

C语言必做30道练习题

C语言练习30题&#xff08;分支循环&#xff0c;数组&#xff0c;函数&#xff0c;递归&#xff0c;操作符&#xff09; 目录 分支循环1.闰年的判断2.阅读代码&#xff0c;计算代码输出的结果3.输入一个1~7的数字&#xff0c;打印对应的星期几4.输入任意一个整数值&#xff0c;…

tp接口 入口文件 500 错误原因

一、描述 二、可能的原因 1、runtime目录没权限 2、关闭了Tp记录日志的功能 3、关闭debug调试模式 4、关闭了debug模式还是报错 一、描述 Thinkphp项目本地正常&#xff0c;上传到线上后静态文件访问正常&#xff0c;访问tp接口报500错误。 经调试发现&#xff0c;在php入…

思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!

文章目录 前言1. 下载运行Ollama框架2. Ollama下载大语言模型3. 思源笔记设置连接Ollama4. 测试笔记智能辅助写作5. 安装Cpolar工具6. 配置Ollama公网地址7. 笔记设置远程连接Ollama8. 固定Ollama公网地址 前言 今天我们要聊聊如何通过cpolar内网穿透技术&#xff0c;把国产笔…

CAS 详解

Java 中 CAS 是如何实现的&#xff1f; 在 Java 中&#xff0c;实现 CAS&#xff08;Compare-And-Swap, 比较并交换&#xff09;操作的一个关键类是Unsafe。 Unsafe类位于sun.misc包下&#xff0c;是一个提供低级别、不安全操作的类。由于其强大的功能和潜在的危险性&#xf…