LangChain和Pinecone

想象一下,如果你能让聊天机器人不仅仅回答通用的问题,还能从你自己的数据库或文件中提取信息,并根据这些信息执行具体操作,比如发邮件,那会是什么情况?LangChain正是为了实现这一目标而诞生的。

LangChain:一个语言框架,提供了与语言模型交互的组件和接口。

LangChain旨在让开发者能够运用语言模型的强大功能,创建出不仅仅是调用API的应用程序,而是能够连接其他数据源,与环境交互,实现自主决策的应用程序。

LangChain由几个核心组件组成:

- 模型(Model):LangChain支持多种语言模型和平台,如OpenAI的GPT-3和GPT-3.5,Hugging Face Hub的开源模型,以及自定义或私有模型。

- 提示(Prompt):提示是一种将输入数据转换为适合语言模型处理的格式的技术。LangChain提供了多种提示模板(Prompt Template),如聊天机器人风格的提示,ELI5问答风格的提示等。LangChain还提供了提示优化(Prompt Optimization)的功能,可以根据反馈自动调整提示参数。

from langchain.prompts import (
    ChatPromptTemplate,
    PromptTemplate,
    SystemMessagePromptTemplate,
    AIMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
from langchain.schema import (
    AIMessage,
    HumanMessage,
    SystemMessage
)
 
prompt=PromptTemplate(
    template="You are a helpful assistant that translates {input_language} to {output_language}.",
    input_variables=["input_language", "output_language"],
)

system_message_prompt = SystemMessagePromptTemplate(prompt=prompt)
 

chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
 
chat_prompt.format_prompt(input_language="English", output_language="French", text="I love programming.").to_messages()
 
[SystemMessage(content='You are a helpful assistant that translates English to French.', additional_kwargs={}),
HumanMessage(content='I love programming.', additional_kwargs={})]

output = chat_prompt.format(input_language="English", output_language="French", text="I love programming.")
output
 
 

- 索引(Index):索引是一种将文本数据转换为向量嵌入,并存储在一个可检索的结构中的技术。LangChain提供了多种索引类型(Index Type),如Elasticsearch,Pinecone。Langchain还提供了检索器(Retriever)的功能,可以根据输入的查询,从索引中检索出最相关的文档或向量。

- 代理(Agent):代理是一种使用语言模型来决定应该采取什么行动的技术。LangChain提供了多种代理类型(Agent Type),如ReAct,Conversational Agent等。LangChain还提供了工具包(toolkit)的功能,可以让代理使用一些外部的工具,如Web搜索,计算器,API等。

  • 工具:执行特定职责的函数。这可以是诸如:Google搜索、数据库查找、Python REPL、其他链等。工具的接口目前是期望有一个字符串作为输入,一个字符串作为输出的函数。

  • LLM:为代理提供动力的语言模型。

  • 代理:要使用的代理。这应该是一个引用支持代理类的字符串。

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI

#首先,让我们加载我们要使用的语言模型来控制代理人。
llm = OpenAI(temperature=0)

#接下来,让我们加载一些要使用的工具。请注意,llm-math工具使用LLM,因此我们需要传递它。
tools = load_tools(["serpapi", "llm-math"], llm=llm)

#最后,让我们使用工具、语言模型和我们想要使用的代理人类型初始化一个代理人。
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

agent.run("Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?")

#输出
Camila Morrone is Leo DiCaprio's girlfriend and her current age raised to the 0.43 power is 3.991298452658078.
 

代理类型:

zreo-shot-react-description:此代理使用ReAct框架,仅基于工具的描述来确定要使用的工具。

react-docstore:使用ReAct框架与文档存储进行交互。必须提供两个工具:一个Search工具和一个Lookup工具(它们必须被命名为这样)。Search工具应该搜索文档,而Lookup工具应该查找最近找到的文档中的一个术语。

self-ask-with-search:这个代理使用一个被命名为Intermediate Answer的工具。这个工具应该能够查到问题的事实性答案。

conversational-react-description:这个代理程序旨在用于对话环境中,提示设计旨在使代理程序有助于对话。它使用ReAct框架来决定使用哪个工具,并使用内存来记忆先前的对话交互。

- 记忆(Memory):记忆是一种将语言模型的输出或历史记录存储起来,并在需要时重新使用的技术。LangChain提供了短期记忆(Short-Term Memory)和长期记忆(Long-Term Memory)的功能,可以让语言模型更好地理解上下文和保持一致性。

- (Chain):

LangChain的核心思想是将不同的组件链接在一起,形成一个链式结构,从而实现更复和高级的功能。

Pinecone:一个向量数据库,提供了存储和检索向量嵌入的服务,可以用于相似搜索等功能。

向量嵌入是一种将复杂数据(如文本,图像,视频等)转换为数值向量的机器学习技术,可以用于表示数据的语义和特征。向量数据库是一种专门用于存储和检索向量嵌入的数据库。它可以通过计算向量之间的相似度,实现高效的相似性搜索功能,从而支持语言搜索,推荐系统,异常检测等应用场景。

Pinecone的使用方法是通过创建一个索引(Index)对象,将向量嵌入和元数据写入到索引中,然后调用索引对象的方法来执行相似性搜索或其他操作。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值