使用LangChain构建简易LLM应用

老铁们,今天咱们来聊聊如何用LangChain快速构建一个简易的LLM(大语言模型)应用。这次的主题是通过一行代码加上一些提示来实现文本翻译。这种应用虽然简单,但也是上手LangChain的极好方式——很多强大的功能其实只需要一些提示和LLM调用就可以搞定!

看完这个教程,你将获得:

  • 使用语言模型的高阶概念
  • 运用PromptTemplates和OutputParsers的技巧
  • 利用LangChain Expression Language (LCEL)联结组件
  • 使用LangSmith进行应用调试和跟踪
  • 使用LangServe部署你的应用

设置环境

Jupyter Notebook

这个指南适合在Jupyter Notebook中执行。毕竟,调试和学习LLM系统这种复杂的东东,互动式环境再合适不过啦!安装指南在这里

安装LangChain

通过以下命令安装LangChain:

pip install langchain
conda install langchain -c conda-forge

更多安装细节可以查看我们的安装指南

LangSmith

LangChain应用往往会包含多步骤和多LLM调用。随着复杂度增加,洞察链内或代理内部的操作细节至关重要。LangSmith就是解决这问题的好帮手。

注册后,确保你的环境变量设置正确来开始日志跟踪:

export LANGCHAIN_TRACING_V2="true"
export LANGCHAIN_API_KEY="..."

在Notebook中可以这样设置:

import getpass
import os

os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = getpass.getpass()

使用语言模型

首先,咱们来看怎样单独使用语言模型。LangChain支持多种语言模型,老铁们可以根据需要选择一个:

OpenAI、Anthropic、Azure、Google、Cohere等等。

安装OpenAI模型举例:

pip install -qU langchain-openai

代码如下:

import getpass
import os

os.environ["OPENAI_API_KEY"] = getpass.getpass()

from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4")

通过调用模型,你可以传入一个消息列表给.invoke方法。

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="Translate the following from English into Italian"),
    HumanMessage(content="hi!"),
]

result = model.invoke(messages)

OutputParsers

模型返回的是AIMessage,里边不光是字符串,还有元数据。通常我们只需要处理字符串,这时就派上了StrOutputParser的用场。

from langchain_core.output_parsers import StrOutputParser

parser = StrOutputParser()

result = parser.invoke(result)

Prompt Templates

我们往模型里传的消息列表通常来自用户输入和应用逻辑的组合。PromptTemplates正是为此而生,可以把原始用户输入加工为可以传入模型的prompt。

创建PromptTemplate实例:

from langchain_core.prompts import ChatPromptTemplate

system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages(
    [("system", system_template), ("user", "{text}")]
)

LCEL组件连结

通过管道符号|将各个组件连在一起,实现优化的流和追踪支持。

chain = prompt_template | model | parser
result = chain.invoke({"language": "italian", "text": "hi"})

使用LangServe进行服务

最后一步就是部署应用。我们会创建一个Python文件,将应用逻辑放入并通过LangServe部署。

步骤如下:

pip install "langserve[all]"

创建serve.py文件:

from fastapi import FastAPI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
from langserve import add_routes

system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([
    ('system', system_template),
    ('user', '{text}')
])

model = ChatOpenAI()
parser = StrOutputParser()

chain = prompt_template | model | parser

app = FastAPI(
  title="LangChain Server",
  version="1.0",
  description="A simple API server using LangChain's Runnable interfaces",
)

add_routes(app, chain, path="/chain")

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="localhost", port=8000)

运行服务器:

python serve.py

通过访问http://localhost:8000即能看到你部署的服务啦!

小结

在这个教程中,我们构建了一个基础的LLM应用。通过语言模型、输出解析、提示模板,结合LCEL,得到了良好的可观察性,并用LangServe成功部署。老铁们,这只是成为AI工程师的开始,后续还有更多进阶内容等着你去探索!

今天的技术分享就到这里,希望对大家有帮助。开发过程中遇到问题也可以在评论区交流~

—END—

### LangChain Agent 实战示例项目教程 #### 了解LangChain Agent的工作原理 LangChain Agent是一种能够执行特定任务的人工智能实体,可以被设计成独立工作或与其他代理协同作业。这些代理通过一系列预定义的行为模式来完成复杂操作,比如查询数据库、解析文档以及调用API接口等[^1]。 #### 构建简单的问答机器人 为了展示如何创建一个基于LangChain Agent的应用程序实例,这提供了一个简易版的Python代码片段用于构建一个能回答简单问题的知识型聊天机器人: ```python from langchain import LangChainAgent, KnowledgeBaseTool def create_qa_bot(): kb_tool = KnowledgeBaseTool() # 初始化知识库工具 qa_agent = LangChainAgent( tools=[kb_tool], # 添加所需使用的工具列表 llm=OpenAI(), # 使用指定的语言模型作为LLM引擎 verbose=True # 设置为True以便查看详细的运行日志 ) return qa_agent if __name__ == "__main__": bot = create_qa_bot() while True: query = input("请输入您的问题 (输入'exit'退出): ") if query.lower().strip() == 'exit': break response = bot.run(query) print(f"Bot的回答: {response}") ``` 此段代码展示了怎样利用`KnowledgeBaseTool`类从内部存储的数据集中检索信息,并借助于大型语言模型(如OpenAI API)来进行自然语言处理和生成回复。 #### 应用场景扩展——多代理协作机制下的任务分配 当面对更复杂的业务逻辑需求时,则可能涉及到多个不同类型的代理之间的交互合作。此时就需要引入像ReAct这样的框架来帮助管理各个代理间的通信流程与决策过程[^2]。例如,在上述例子基础上进一步增强功能,使其能够在必要时候自动切换至其他专门化的子代理以获取更加精准的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值