掘金 人工智能 05月07日 11:03
langchain 学习 制作一个简单的 llm 对话程序
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何使用LangChain构建一个简单的LLM对话程序,并将其部署为LangServe服务。首先,展示了如何利用LangChain的核心模块,如SystemMessage、HumanMessage、ChatOllama和StrOutputParser,创建一个基本的对话流程。接着,详细讲解了如何使用ChatPromptTemplate构建翻译任务的链式处理流程,包括定义系统模板、构造消息、链式调用与输出解析。最后,介绍了LangServe的用法,如何通过add_routes函数将LangChain的Runnable对象集成到FastAPI应用中,并自动生成HTTP路由,从而简化集成和快速部署。

💬**LangChain消息类型与模型调用**: LangChain通过SystemMessage和HumanMessage定义对话消息,ChatOllama连接本地Ollama服务,StrOutputParser将模型输出转化为字符串,实现基本的LLM对话。

🔗**链式处理与翻译任务**: 利用ChatPromptTemplate构建翻译任务的链式流程,定义系统模板和用户输入模板,通过链式调用模型和解析器,实现语言翻译功能。

🌐**LangServe简化部署**: LangServe简化了LangChain应用的部署流程,通过add_routes函数将LangChain Runnable对象集成到FastAPI应用中,自动生成HTTP路由,方便快速部署和标准化接口。

langchain 学习 制作一个简单的 llm 对话程序

from langchain_core.messages import SystemMessage, HumanMessagefrom langchain_ollama import ChatOllamafrom langchain_core.output_parsers import StrOutputParsermodel = ChatOllama(    base_url= "http://127.0.0.1:11434",    model="qwen2.5:32b-instruct-q5_K_S",    temperature=0.7)messages = [    SystemMessage(content="你是世界级技术专家"),    HumanMessage(content="帮我写一篇关于ai 的文章, 100个字"),]## 调用模型result = model.invoke(messages)print(result.content)## 格式化输出parser = StrOutputParser()print(parser.invoke(result))## 链chain = model | parserprint(chain.invoke(messages))

使用了 langchain 的模块来构建一个翻译任务的链式处理流程。你定义了一个提示模板(ChatPromptTemplate),连接了一个本地部署的大模型(ChatOllama),并最终通过字符串输出解析器(StrOutputParser)将结果转换为字符串。

from langchain_core.prompts import ChatPromptTemplatefrom langchain_core.messages import SystemMessage, HumanMessagefrom langchain_ollama import ChatOllamafrom langchain_core.output_parsers import StrOutputParsersystem_template = "Translate the following into {language}:"prompt_template = ChatPromptTemplate.from_messages(    [("system", system_template), ("user", "{text}")])result = prompt_template.invoke({"language": "italian", "text": "hi"})print(result.to_messages())## 自我封装## [SystemMessage(content='Translate the following into italian:', additional_kwargs={}, response_metadata={}), HumanMessage(content='hi', additional_kwargs={}, response_metadata={})]model = ChatOllama(    base_url= "http://127.0.0.1:11434",    model="qwen2.5:32b-instruct-q5_K_S",    temperature=0.7)parser = StrOutputParser()chain = prompt_template | model | parserresult = chain.invoke({"language": "italian", "text": "hi"})print(result)

定义系统模板和用户输入模板:

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

这里,你首先定义了一个系统级别的提示(system_template),它包含一个占位符 {language},用于指定目标语言。然后,你创建了一个 ChatPromptTemplate,它接受系统提示和用户提示(同样含有一个占位符 {text})。构造消息:当你调用 prompt_template.invoke({"language": "italian", "text": "hi"}) 时,ChatPromptTemplate 会根据传入的字典替换掉模板中的占位符,生成最终的消息。在这个例子中,生成的消息将会是:

链式调用与输出解析

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

最后,你构建了一个处理链,它从构造消息开始,经过模型推理,最后通过 StrOutputParser 解析模型的输出为字符串格式。

langserve使用

使用 LangChain 和 FastAPI 构建的简单服务端程序,它通过 langserve 提供了一个 REST API 接口来运行一个翻译链(chain)。整体结构非常清晰、规范。

主要用途

langserve.add_routes() 是 LangServe 库中的一个实用函数,用于将 LangChain 的 Runnable 对象快速集成到 FastAPI 应用中,并自动为其生成相应的 HTTP 路由。这使得开发者能够轻松地通过 REST API 来调用 LangChain 流程(如文本处理、翻译、问答等),而无需手动编写路由逻辑。

add_routes(app, chain, path="/chain") 实际上做了以下几件事情:

from fastapi import FastAPIfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParserfrom langchain_ollama import ChatOllamafrom langserve import add_routes# 1. Create prompt templatesystem_template = "Translate the following into {language}:"prompt_template = ChatPromptTemplate.from_messages([    ('system', system_template),    ('user', '{text}')])# 2. Create modelmodel = ChatOllama(    base_url= "http://192.168.5.240:11434",    model="qwen2.5:32b-instruct-q5_K_S",    temperature=0.7)# 3. Create parserparser = StrOutputParser()# 4. Create chainchain = prompt_template | model | parser# 4. App definitionapp = FastAPI(  title="LangChain Server",  version="1.0",  description="A simple API server using LangChain's Runnable interfaces",)# 5. Adding chain routeadd_routes(    app,    chain,    path="/chain",)if __name__ == "__main__":    import uvicorn    uvicorn.run(app, host="localhost", port=8000)

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LangChain LLM LangServe FastAPI Ollama
相关文章