ChatGPT|LangChain介绍

article/2024/9/20 8:51:35

什么是LangChain?

使用ChatGPT大家可能都是知道prompt, 

(1)想像一下,如果我需要快速读一本书,想通过本书作为prompt,使用ChatGPT根据书本中来回答问题,我们需要怎么做? 

(2)假设你需要一个问答任务用到prompt A,摘要任务要使用到prompt B,那如何管理这些prompt呢?因此需要用LangChain来管理这些prompt。

LangChain的出现,简化了我们在使用ChatGPT的工程复杂度。

LangChain中的模块,每个模块如何使用?

前提:运行一下代码,需要OPENAI_API_KEY(OpenAI申请的key),同时统一引入这些库:

# 导入LLM包装器
from langchain import OpenAI, ConversationChain
from langchain.agents import initialize_agent
from langchain.agents import load_tools
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

LLM:从语言模型中输出预测结果,和直接使用OpenAI的接口一样,输入什么就返回什么。

llm = OpenAI(model_name="text-davinci-003", temperature=0.9) // 这些都是OpenAI的参数
text = "What would be a good company name for a company that makes colorful socks?"
print(llm(text)) 
// 以上就是打印调用OpenAI接口的返回值,相当于接口的封装,实现的代码可以看看github.com/hwchase17/langchain/llms/openai.py的OpenAIChat

以上代码运行结果:

Cozy Colours Socks.

Prompt Templates:管理LLMs的Prompts,就像我们需要管理变量或者模板一样。

prompt = PromptTemplate(input_variables=["product"],template="What is a good name for a company that makes {product}?",
)
// 以上是两个参数,一个输入变量,一个模板字符串,实现的代码可以看看github.com/hwchase17/langchain/prompts
// PromptTemplate实际是基于StringPromptTemplate,可以支持字符串类型的模板,也可以支持文件类型的模板

以上代码运行结果:

What is a good name for a company that makes colorful socks?

Chains:将LLMs和prompts结合起来,前面提到提供了OpenAI的封装和你需要问的字符串模板,就可以执行获得返回了。

from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt) // 通过LLM的llm变量,Prompt Templates的prompt生成LLMChain
chain.run("colorful socks") // 实际这里就变成了实际问题:What is a good name for a company that makes colorful socks?

Agents:基于用户输入动态地调用chains,LangChani可以将问题拆分为几个步骤,然后每个步骤可以根据提供个Agents做相关的事情。

# 导入一些tools,比如llm-math
# llm-math是langchain里面的能做数学计算的模块
tools = load_tools(["llm-math"], llm=llm)
# 初始化tools,models 和使用的agent
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
text = "12 raised to the 3 power and result raised to 2 power?"
print("input text: ", text)
agent.run(text)

通过如上的代码,运行结果(拆分为两个部分):

> Entering new AgentExecutor chain...I need to use the calculator for this
Action: Calculator
Action Input: 12^3
Observation: Answer: 1728
Thought: I need to then raise the previous result to the second power
Action: Calculator
Action Input: 1728^2
Observation: Answer: 2985984Thought: I now know the final answer
Final Answer: 2985984
> Finished chain.

Memory:就是提供对话的上下文存储,可以使用Langchain的ConversationChain,在LLM交互中记录交互的历史状态,并基于历史状态修正模型预测。

# ConversationChain用法
llm = OpenAI(temperature=0)
# 将verbose设置为True,以便我们可以看到提示
conversation = ConversationChain(llm=llm, verbose=True)
print("input text: conversation")
conversation.predict(input="Hi there!")
conversation.predict(input="I'm doing well! Just having a conversation with an AI.")

通过多轮运行以后,就会出现:

Prompt after formatting:
The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.Current conversation:Human: Hi there!
AI:  Hi there! It's nice to meet you. How can I help you today?
Human: I'm doing well! Just having a conversation with an AI.
AI:  That's great! It's always nice to have a conversation with someone new. What would you like to talk about?

具体代码

如下:

# 导入LLM包装器
from langchain import OpenAI, ConversationChain
from langchain.agents import initialize_agent
from langchain.agents import load_tools
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# 初始化包装器,temperature越高结果越随机
llm = OpenAI(temperature=0.9)
# 进行调用
text = "What would be a good company name for a company that makes colorful socks?"
print("input text: ", text)
print(llm(text))prompt = PromptTemplate(input_variables=["product"],template="What is a good name for a company that makes {product}?",
)
print("input text: product")
print(prompt.format(product="colorful socks"))chain = LLMChain(llm=llm, prompt=prompt)
chain.run("colorful socks")# 导入一些tools,比如llm-math
# llm-math是langchain里面的能做数学计算的模块
tools = load_tools(["llm-math"], llm=llm)
# 初始化tools,models 和使用的agent
agent = initialize_agent(tools,llm,agent="zero-shot-react-description",verbose=True)
text = "12 raised to the 3 power and result raised to 2 power?"
print("input text: ", text)
agent.run(text)# ConversationChain用法
llm = OpenAI(temperature=0)
# 将verbose设置为True,以便我们可以看到提示
conversation = ConversationChain(llm=llm, verbose=True)
print("input text: conversation")
conversation.predict(input="Hi there!")
conversation.predict(input="I'm doing well! Just having a conversation with an AI.")

参考资料

https://note.com/npaka/n/n155e66a263a2

https://www.cnblogs.com/AudreyXu/p/17233964.html

https://github.com/hwchase17/langchain


http://chatgpt.dhexx.cn/article/yImxmIXL.shtml

相关文章

如何用ChatGPT搞科研?

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>【计算机视觉】微信技术交流群 转载自知乎:芯片斯多葛 、量子位(QbitAI) 这位研究僧,GPT-4都发布了,你还在纯人工…

使用范例调教ChatGPT

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

亲测:Chatgpt国内就能使用,全面支持中文

ChatGPT是什么? ChatGPT是一个基于人工智能技术的聊天机器人网站,它使用了GPT(Generative Pre-trained Transformer)模型来生成自然语言响应。用户可以在ChatGPT上与机器人进行对话,机器人会根据用户的输入生成相应的回…

摆脱网络限制:用Vercel打造属于你的ChatGPT网站

摆脱网络限制:用Vercel打造属于你的ChatGPT网站 前言 上一篇分享了如何用自己的服务器搭建chatgpt服务器,但是需要你有一个服务器,还是有点成本的。今天我带来一个无需自备服务器的方式,让你也能搭建属于自己的chatgpt专属助手&a…

不限次数的chatGPT

不说废话直接看方法: 不用翻墙,开干 第一步:打开电脑的Edge浏览器,就是windows系统的默认浏览器,搜索wetab,点击如下的官方链接就会进入安装插件界面 第二步:点击chat AI就会弹出这个弹窗&…

推荐一个免费的集成ChatGPT的代码编辑器,程序员写代码将被颠覆

上周,Open AI团队正式宣布:GPT-4来了!GPT-4的出现,随后 Microsoft的多个产品就集成了GPT-4。紧接着基于Open AI公司发布的GPT-4编写、编辑和讨论代码新一代编辑器 Cursor 的出现。 Cursor是一款独立的应用。从界面来看&#xff0c…

零基础也能用ChatGPT写代码,简直不要太爽

最近朋友圈刷到最多的动态和话题都是围绕ChatGPT的,作为一个功能强大,用途广泛的聊天机器人,我们能用它做的事情太多了。比如用它写文案,写剧本,规划旅游路线,甚至写小说等等。在本文中,我们将探…

用ChatGPT科学学习Python和写代码

你的朋友圈被ChatGPT攻占了吗? ChatGPT最近太火了! ChatGPT是什么? ChatGPT 是一种预训练的语言模型,用于对话生成。它的名字来源于它的两个主要组成部分:「聊天」(chat)和「生成式语言模型」&a…

不会写代码,也能部署一个独立ChatGPT?

本教程使用GPT-3模型接口模拟ChatGPT项目,虽然与真正的ChatGPT存在差异,但是演示了ChatGPT的工作原理。 (ChatGPT服务是基于GPT-3模型,经过大量的微调训练而来的,本教程暂时不包含训练内容,之后我们会讲如…

ChatGPT教你写代码

问题: 本人是个菜鸟,想将HTID字段和LDaiHao字段相同,且个数大于1的记录 的Feature字段值改为“共压”。 于是我凭着自己粗浅的学识,写了个sql Update 线号表 T1, (Select HTID,LDaiHao ,Count(HTID) as NUM From 线号表 Group By …

ChatGPT 能自己跑代码了!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! time leap, sci-fi, photorealistic, --niji 5 --ar 3:2 --s 1000 自 ChatGPT 发布以来,各行各业对其能力探索的举措一直没有停止。 很多大厂纷纷跟进,竞相推出自研…

如何让ChatGPT Plus教你写代码?

1、什么是chatgptPlus?和chatgpt的比较? ChatGPT 是 OpenAI 开发的一种人工智能语言模型,是对原有的 ChatGPT 模型的升级版。与 ChatGPT 相比,ChatGPT 在以下几个方面进行了改进: 更高的生成质量:ChatGPT…

如果让ChatGPT来写代码他会怎么写?

一、前言 今天突发奇想想试一下如果让ChatGPT来写51代码会怎么样呢?今天我们就一起来看一下他会怎么写51代码,机器人写出来的代码到底可不可以运行? 在开始之前我们首先让ChatGPT做一个自我介绍吧! 问: ChatGPT介绍…

快来看,我让chatGPT帮我写代码了!!!

现在AIGC很火,chatGPT的功能也是非常的强大,作为一个学计算机的,我想chatGPT必须要玩起来,哈哈哈哈~~~ 突发奇想,虽然学了几年的计算机,但是编程能力还是不行&#xff0c…

怎么用ChatGPT写代码,ChatGPT怎么改代码修BUG

ChatGPT 是一个自然语言处理模型,可以模拟人类语言生成文本,可以用于写代码和修复bug。在本文中,说一下我的经验,如何使用 ChatGPT 写代码和修bug。 怎么用ChatGPT写代码? 虽然 ChatGPT 被广泛用于文本生成&#xff0…

ChatGPT可以写代码吗【详解】

ChatGPT可以写代码吗?ChatGPT可以实现很多的操作,用户只要说出自己的需求,ChatGPT就可以帮助你进行解答,比如写代码,只要在对话框输入问题,就可以得到答案,操作很简单。具体的方法小编已经给大家…

【ChatGPT实战】11.如何使用ChatGPT写代码?

以往大家总是调侃说程序员只要会用Google就好了,直接搜对应的代码然后复制粘贴就可以了。但是只有程序员才知道真要找到可用的代码是不容易的,经常是找很久都没有合适的代码。 ChatGPT在编程方面拥有着不可忽视的优势,能够生成高质量的程序代…

人工智能写的十段代码,九个通过测试了

“抢走你工作的不会是 AI ,而是先掌握 AI 能力的人” 编程测试 1. 我想用golang实现二叉树前序,请你帮我写一下代码。 // 定义二叉树节点 type TreeNode struct {Val intLeft *TreeNodeRight *TreeNode }// 前序遍历 func PreOrderTraversal(root *Tre…

OpenAI ChatGPT 我也体验了一下自动写程序

大家好最近 ChatGPT非常出圈,于是我也出于好奇心试用了一下自动写代码, 先写一个简单程序吧 在写一个有点难度的吧 import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.…

ChatGPT三问:是什么、从哪来、去往哪?

©PaperWeekly 原创 作者 | 张燚钧 单位 | 中国移动云能力中心 研究方向 | 预训练大模型 ChatGPT 热潮已经持续月余,目前热度依然不减。根据最新的消息,ChatGPT 的升级版 GPT-4 也已蓄势待发。回首 ChatGPT 的这波热潮,ChatGPT 是什么&a…