LangChain:让使用大型语言模型变得很容易
2023年07月27日 由 Samoyed 发表
932967
0
LangChain是一个框架,通过为常见用例提供抽象,简化了与大型语言模型(如OpenAI GPT-4或Google PaLM)的工作。它同时支持JavaScript和Python。
为了理解对LangChain的需求,我们首先需要讨论大型语言模型是如何工作的。
在底层,大型语言模型是一种统计模型,给定一组包含从单个字符到几个单词的任何内容的文本块,它可以预测下一组文本块。
最初的文本块称为提示,提示工程是通过提供最合适的提示集来微调从大型语言模型接收的结果的技术。
虽然LangChain提供了许多工具,但它的核心功能有三个:
一个抽象层,使开发人员能够使用一组标准化的命令与不同的大型语言模型提供者进行交互。
它提供了一组工具,通过执行一系列最佳实践来规范化提示工程的过程。
LangChain能够将其提供的各个组件连接在一起,以执行复杂的交互操作。
下面的JavaScript示例演示了如何创建和执行包含单个提示符的最简单链。
const model = new OpenAI();
import { PromptTemplate } from "langchain/prompts";
const prompt = PromptTemplate.fromTemplate(`Tell me a joke about {topic}`);
const chain = new LLMChain({ llm: model, prompt: prompt });
const response = await chain.call({ topic: "ducks" });
当然,使用单个组件的链并不是很有趣。更复杂的应用程序通常使用多个组件来生成所需的结果。
我们将使用SimpleSequentialChain来演示这一点,它可以按顺序运行多个提示。在我们的例子中,在要求LangChain写一个关于所提供语言的笑话之后,我们将要求它将其翻译成西班牙语。
const translatePrompt = PromptTemplate.fromTemplate(`translate the following text to Spanish: {text}`);
const translateChain = new LLMChain({ llm: model, prompt: translatePrompt });
const overallChain = new SimpleSequentialChain({
chains: [chain, translateChain],
verbose: true,
});
const results = await overallChain.run("ducks");
请注意,通过向 SimpleSequentialChain 传递 verbose: true,我们可以看到生成过程,这对调试很有帮助。
当然,LangChain可以做的远不止链接几个提示符。它包括两个模块,允许开发人员扩展与大型语言模型的交互,而不仅仅是简单的聊天。
内存模块使开发人员能够使用各种解决方案跨链持久化状态,包括外部数据库(如Redis和DynamoDB)以及在内存中存储数据。
Agents模块使链能够与外部提供者进行交互,并基于它们的响应执行操作。
完整的文档以及更复杂的示例可以在官方的LangChain文档网站上找到。
开发人员应该意识到,LangChain仍在积极开发中,在生产环境中使用时应该小心处理。
来源:
https://www.infoq.com/news/2023/07/langchain-llm-made-easy/