文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Langchain集成管理prompt功能的方法是什么

2023-07-05 18:20

关注

本篇内容介绍了“Langchain集成管理prompt功能的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

LangChain是什么 如何使用

经过了chatGPT,大家都知道了prompt-based learning,也明白了prompt在生成式模型的重要性。假设问答任务要用prompt A, 摘要生成任务要用prompt B,那么如何管理不同的prompt呢?
Langchain主要的功能就是集成管理prompt。

安装

pip install langchain

一、需要大语言模型

使用langchain需要使用一个大语言模型。这个模型可以用openai的gpt-turbo-3.5,也可以用Hugging face hub里面的大模型。
用这些大模型就需要调用他们的api,所以就要去这些网站生成相应的token。

二、LangChain的模块

LangChain提供了许多模块,可以用于构建语言模型应用程序。这些模块可以组合在一起创建更复杂的应用程序,也可以单独用于简单的应用程序。

LangChain主要有以下模块

1. LLM:从语言模型中输出预测结果

# 导入LLM包装器。from langchain.llms import OpenAI# 初始化包装器,temperature越高结果越随机llm = OpenAI(temperature=0.9)# 进行调用text = "What would be a good company name for a company that makes colorful socks?"print(llm(text))

2. Prompt Templates: 管理LLMs的Prompts

一般来说我们不会直接把输入给模型,而是将输入和一些别的句子连在一起,形成prompts之后给模型。
例如之前根据产品取名的用例,在实际服务中我们可能只想输入"socks",那么"What would be a good company name for a company that makes"就是我们的template。

from langchain.prompts import PromptTemplateprompt = PromptTemplate(    input_variables=["product"],    template="What is a good name for a company that makes {product}?",)

那么,对于模型来说,真正的输入就是

print(prompt.format(product="colorful socks"))What is a good name for a company that makes colorful socks?

3. Chains:将LLMs和prompts结合起来

很容易想到,我们的模型有很多,prompts也有很多,那么需要把他们组装起来,这就是Chains做的事情。
一个Chain包含一个Template和一个模型。例如LLMChain,就包含一个PromptTemplate和一个LLM。
这样我们的例子就可以

from langchain.prompts import PromptTemplatefrom langchain.llms import OpenAIllm = OpenAI(temperature=0.9)prompt = PromptTemplate(    input_variables=["product"],    template="What is a good name for a company that makes {product}?",)

我们可以创建一个LLMChain,然后将llm和prompt给chain。

from langchain.chains import LLMChainchain = LLMChain(llm=llm, prompt=prompt)

然后可以运行这个chain

chain.run("colorful socks")Socktastic!'

4. Agents:基于用户输入动态地调用chains

关于Agents,需要理解以下的概念:

这里有一个例子。假设想知道Taylor Swift的男友是谁,并且求出他的年龄的3次方。

from langchain.agents import laod_toolsfrom langchain.agents import initialize_agentfrom langchain.llms import OpenAIimport osos.environ["OPENAI_API_KEY"] = "xxxxxxxx"os.environ["SERPAPI_API_KEY"] ="yyyyyyyy"# 导入llm模型llm = OpenAI(temperature=0)# 导入一些tools,这里倒入serpapi和llm-math# SerpApi是一个付费提供搜索结果API的第三方服务提供商。它允许用户通过简单的API调用访问各种搜索引擎的搜索结果,包括Google、Bing、Yahoo、Yandex等。# llm-math是langchain里面的能做数学计算的模块tools = load_tools(["serpapi", "llm-math"], llm=llm)# 初始化tools,models 和使用的agentagent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)# 输出结果agent.run("Who isTaylor's boyfriend? What is his current age raised to the 3 power?")

输出

> Entering new AgentExecutor chain...
 I need to find out who Taylor Swift's boyfriend is and then calculate his age raised to the 3 power.
Action: Search
Action Input: "Taylor Swift boyfriend"
Observation: Taylor Swift's romance with actor Joe Alwyn is her most serious yet secretive to date. Since 2016, their famously private relationship has ...
Thought: I need to find out Joe Alwyn's age.
Action: Search
Action Input: "Joe Alwyn age"
Observation: 32 years
Thought: I need to calculate 32 raised to the 3 power.
Action: Calculator
Action Input: 32^3
Observation: Answer: 32768
Thought: I now know the final answer.
Final Answer: Taylor Swift's boyfriend is Joe Alwyn and his current age raised to the 3 power is 32768.

分析这个输出可以知道,它的思路很清晰。
它的动作包括:

每一个输出之后紧跟着一个Thought,思考下一步做什么,如果发现任务全部完成就输出最终答案。

5. Memory

如果想做一个聊天机器人,那么要求机器人有短暂的记忆,记住对话的历史。
Langchain的ConversationChain就提供这样一个功能。

默认情况下,ConversationChain具有一种简单类型的内存,它会记住所有先前的输入/输出并将它们添加到传递的上下文中。

# ConversationChain用法from langchain import OpenAI, ConversationChainllm = OpenAI(temperature=0)conversation = ConversationChain(llm=llm, verbose=True) # (将verbose设置为True,以便我们可以看到提示)conversation.predict(input="Hi there!")

输出

> Entering new chain...
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:

> Finished chain.
' Hello! How are you today?

遇到的错误

“Langchain集成管理prompt功能的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯