长春餐饮网站建设wordpress页面构造器
news/
2025/10/8 20:57:32/
文章来源:
长春餐饮网站建设,wordpress页面构造器,本地电脑做服务器 建网站,长链接转换成短链接分类目录#xff1a;《自然语言处理从入门到应用》总目录 在本文中#xff0c;我们将学习如何在LangChain中创建简单的链式连接并添加组件以及运行它。链式连接允许我们将多个组件组合在一起#xff0c;创建一个统一的应用程序。例如#xff0c;我们可以创建一个链式连接《自然语言处理从入门到应用》总目录 在本文中我们将学习如何在LangChain中创建简单的链式连接并添加组件以及运行它。链式连接允许我们将多个组件组合在一起创建一个统一的应用程序。例如我们可以创建一个链式连接接收用户输入使用PromptTemplate对其进行格式化然后将格式化后的响应传递给LLM。我们可以通过将多个链式连接组合在一起或将链式连接与其他组件组合来构建更复杂的链式连接。
快速入门使用LLMChain
LLMChain是一个简单的链式连接它接收一个prompt模板使用用户输入对其进行格式化并返回LLM的响应。要使用LLMChain首先创建一个prompt模板。
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAIllm OpenAI(temperature0.9)
prompt PromptTemplate(input_variables[product],templateWhat is a good name for a company that makes {product}?,
)现在我们可以创建一个非常简单的链式连接它将接收用户输入使用它来格式化prompt并将其发送到LLM。
from langchain.chains import LLMChain
chain LLMChain(llmllm, promptprompt)# 仅指定输入变量运行链式连接。
print(chain.run(colorful socks))输出
Colorful Toes Co.如果有多个变量我们可以使用字典一次输入它们。
prompt PromptTemplate(input_variables[company, product],templateWhat is a good name for {company} that makes {product}?,
)
chain LLMChain(llmllm, promptprompt)
print(chain.run({company: ABC Startup,product: colorful socks}))输出
Socktopia Colourful Creations.我们也可以在LLMChain中使用聊天模型
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (ChatPromptTemplate,HumanMessagePromptTemplate,
)human_message_prompt HumanMessagePromptTemplate(promptPromptTemplate(templateWhat is a good name for a company that makes {product}?,input_variables[product],))chat_prompt_template ChatPromptTemplate.from_messages([human_message_prompt])
chat ChatOpenAI(temperature0.9)
chain LLMChain(llmchat, promptchat_prompt_template)
print(chain.run(colorful socks))输出
Rainbow Socks Co.调用链式连接的不同方式
所有继承自Chain的类都提供了几种运行链式连接逻辑的方式。其中最直接的一种方式是使用 __call__
chat ChatOpenAI(temperature0)
prompt_template Tell me a {adjective} joke
llm_chain LLMChain(llmchat,promptPromptTemplate.from_template(prompt_template)
)llm_chain(inputs{adjective:corny})输出
{adjective: corny,text: Why did the tomato turn red? Because it saw the salad dressing!}默认情况下__call__ 方法会返回输入和输出的键值对。我们可以通过将return_only_outputs设置为True来配置它仅返回输出的键值对。
llm_chain(corny, return_only_outputsTrue)
{text: Why did the tomato turn red? Because it saw the salad dressing!}如果Chain只输出一个输出键即其output_keys中只有一个元素则可以使用run方法。需要注意的是run方法输出一个字符串而不是字典。
# llm_chain only has one output key, so we can use run
llm_chain.output_keys输出
[text]输入
llm_chain.run({adjective:corny})输出
Why did the tomato turn red? Because it saw the salad dressing!在只有一个输入键的情况下我们可以直接输入字符串无需指定输入映射。
# These two are equivalent
llm_chain.run({adjective:corny})
llm_chain.run(corny)# These two are also equivalent
llm_chain(corny)
llm_chain({adjective:corny})输出
{adjective: corny,text: Why did the tomato turn red? Because it saw the salad dressing!}我们可以通过Chain对象的run方法将其作为Agent中的Tool进行简单集成。
为链式连接添加记忆
Chain支持将BaseMemory对象作为其memory参数从而使Chain对象能够在多次调用之间保留数据。换句话说memory参数使Chain成为一个有状态的对象。
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemoryconversation ConversationChain(llmchat,memoryConversationBufferMemory()
)conversation.run(Answer briefly. What are the first 3 colors of a rainbow?)
# - The first three colors of a rainbow are red, orange, and yellow.
conversation.run(And the next 4?)
# - The next four colors of a rainbow are green, blue, indigo, and violet.输出
The next four colors of a rainbow are green, blue, indigo, and violet.基本上BaseMemory定义了langchain存储记忆的接口。它允许通过load_memory_variables方法读取存储的数据并通过save_context方法存储新数据。我们可以在《自然语言处理从入门到应用——LangChain记忆Memory》系列文章了解更多信息。
调试链式连接
仅从输出中调试Chain对象可能会很困难因为大多数Chain对象涉及相当数量的输入prompt预处理和LLM输出后处理。将verbose设置为True将在运行时打印出Chain对象的一些内部状态。
conversation ConversationChain(llmchat,memoryConversationBufferMemory(),verboseTrue
)
conversation.run(What is ChatGPT?)日志输出 Entering new ConversationChain 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: What is ChatGPT?
AI: Finished chain.输出
ChatGPT is an AI language model developed by OpenAI. It is based on the GPT-3 architecture and is capable of generating human-like responses to text prompts. ChatGPT has been trained on a massive amount of text data and can understand and respond to a wide range of topics. It is often used for chatbots, virtual assistants, and other conversational AI applications.使用SequentialChain将链式连接组合起来
在调用语言模型之后的下一步是对语言模型进行一系列的调用。我们可以使用顺序链式连接来实现这一点顺序链式连接按照预定义的顺序执行其链接。具体而言我们将使用SimpleSequentialChain。这是最简单的顺序链式连接类型其中每个步骤都具有单个输入/输出一个步骤的输出是下一个步骤的输入。在本文中我们的顺序链式连接将首先为产品创建一个公司名称我们将重用之前初始化的LLMChain来创建这个公司名称。然后再为产品创建一个口号。我们将初始化一个新的LLMChain来创建这个口号
second_prompt PromptTemplate(input_variables[company_name],templateWrite a catchphrase for the following company: {company_name},
)
chain_two LLMChain(llmllm, promptsecond_prompt)现在我们可以将这两个LLMChain结合起来这样我们就可以一步创建一个公司名称和一个标语。
from langchain.chains import SimpleSequentialChain
overall_chain SimpleSequentialChain(chains[chain, chain_two], verboseTrue)# Run the chain specifying only the input variable for the first chain.
catchphrase overall_chain.run(colorful socks)
print(catchphrase)日志输出 Entering new SimpleSequentialChain chain...
Rainbow Socks Co.Put a little rainbow in your step! Finished chain.输出
Put a little rainbow in your step!使用Chain类创建自定义链式连接
LangChain提供了许多现成的链式连接但有时我们可能希望为特定的用例创建自定义链式连接。在这个例子中我们将创建一个自定义链式连接它将两个LLMChain的输出连接起来。
要创建一个自定义链式连接
创建一个Chain类的子类填写input_keys和output_keys属性添加_call方法展示如何执行链式连接
下面的示例演示了这些步骤
from langchain.chains import LLMChain
from langchain.chains.base import Chainfrom typing import Dict, Listclass ConcatenateChain(Chain):chain_1: LLMChainchain_2: LLMChainpropertydef input_keys(self) - List[str]:# Union of the input keys of the two chains.all_input_vars set(self.chain_1.input_keys).union(set(self.chain_2.input_keys))return list(all_input_vars)propertydef output_keys(self) - List[str]:return [concat_output]def _call(self, inputs: Dict[str, str]) - Dict[str, str]:output_1 self.chain_1.run(inputs)output_2 self.chain_2.run(inputs)return {concat_output: output_1 output_2}现在我们可以尝试运行我们调用的链
prompt_1 PromptTemplate(input_variables[product],templateWhat is a good name for a company that makes {product}?,
)
chain_1 LLMChain(llmllm, promptprompt_1)prompt_2 PromptTemplate(input_variables[product],templateWhat is a good slogan for a company that makes {product}?,
)
chain_2 LLMChain(llmllm, promptprompt_2)concat_chain ConcatenateChain(chain_1chain_1, chain_2chain_2)
concat_output concat_chain.run(colorful socks)
print(fConcatenated output:\n{concat_output})输出
Concatenated output:Funky Footwear CompanyBrighten Up Your Day with Our Colorful Socks!参考文献 [1] LangChain官方网站https://www.langchain.com/ [2] LangChain ️ 中文网跟着LangChain一起学LLM/GPT开发https://www.langchain.com.cn/ [3] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架http://www.cnlangchain.com/
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931939.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!