掘金 人工智能 前天 17:36
一、(基础)构建一个简单的 LangChain 应用
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本教程是一份 LangChain 入门指南,专为国内用户设计,无需魔法,无需付费。文章介绍了 LangChain 的基本概念,即一个用于构建大语言模型(LLM)应用的开发框架。教程从环境准备开始,包括 Python 虚拟环境和 LangChain 的安装。重点介绍了如何使用免费的腾讯元宝和智谱 AI 模型,通过 Python 代码调用大模型,并展示了如何使用输出解析器提取关键信息。此外,教程还讲解了提示词模板的概念和使用方法,帮助用户将原始输入转化为 LLM 友好的提示,最终实现流畅的 LLM 应用。

💡 LangChain 是一个强大的开发框架,它简化了 LLM 与外部工具、数据源的集成,帮助开发者快速构建 AI 应用。

🔑 教程强调了国内用户的友好性,无需魔法,并推荐使用腾讯元宝和智谱 AI 免费模型,降低了学习成本。

💻 教程提供了调用大模型的简单示例,展示了如何使用 `ChatOpenAI` 类构建模型对象,并使用 `.invoke()` 方法与模型交互。

📝 教程介绍了输出解析器的作用,它能从模型响应中提取关键的字符串信息,让输出更简洁明了。

🧩 教程详细讲解了提示词模板的使用,用户可以利用模板将用户输入转化为 LLM 友好的提示,实现更灵活的应用。

🔗 教程演示了使用 `|` 运算符创建链,将提示词模板、模型和输出解析器串联起来,简化了代码编写。

前言

    这是一个一系列教程 LangChain 上手教程,总结和记录学习 LangChain 的过程,欢迎持续关注。文章对应LangChain官网教程,但是本文更加符合国内使用,LangChain官网很多教程需要魔法,本文不需要使用魔法,不需要花模型费用等。

LangChain 是什么

LangChain 是一个用于构建大语言模型(LLM)应用的开发框架。它简化了LLM与外部工具、数据源和流程的集成,让开发者能快速搭建功能丰富的AI应用(如问答机器人、智能助手等)。

准备工作

1. langchain调用大模型简单的示例

1.1. 构建一个模型对象

from langchain_openai import ChatOpenAImodel = ChatOpenAI(model="hunyuan-lite", api_key="申请的key", base_url="https://api.hunyuan.cloud.tencent.com/v1/")

1.1.1. 要简单地调用模型,我们可以将消息列表传递给.invoke方法。

from langchain_openai import ChatOpenAIfrom langchain_core.messages import HumanMessage, SystemMessagemodel = ChatOpenAI(model="hunyuan-lite", api_key="申请的key", base_url="https://api.hunyuan.cloud.tencent.com/v1/")messages = [    SystemMessage(content="将以下内容从英语翻译成意大利语"),    HumanMessage(content="你好"),]print(model.invoke(messages))

当执行完我们可以看到已经输出了

AIMessage(content='Ciao', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 3, 'prompt_tokens': 13, 'total_tokens': 16, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'hunyuan-lite', 'system_fingerprint': '', 'id': '5b729dc85e44d45b8dbdf0fb58bf7984', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, id='run--68f13b2a-f54c-4862-a03c-3def1c3c512a-0', usage_metadata={'input_tokens': 13, 'output_tokens': 3, 'total_tokens': 16, 'input_token_details': {}, 'output_token_details': {}})

1.2. 输出解析器

模型的响应是一个AIMessage。这包含一个字符串响应以及关于响应的其他元数据。我们通常只想处理字符串响应。可以通过使用简单的输出解析器来解析出这个响应。

from langchain_openai import ChatOpenAIfrom langchain_core.messages import HumanMessage, SystemMessagefrom langchain_core.output_parsers import StrOutputParser# 解析器parser = StrOutputParser()model = ChatOpenAI(model="hunyuan-lite", api_key="申请的key", base_url="https://api.hunyuan.cloud.tencent.com/v1/")messages = [    SystemMessage(content="将以下内容从英语翻译成意大利语"),    HumanMessage(content="你好"),]result = model.invoke(messages)# 解析器解析print(parser.invoke(result))

运行后我们需要的结果已经出来了,并且其他的数据已经没了

Ciao

这样写还是有点繁琐,我们可以使用 | 运算符轻松创建链。| 运算符在 LangChain 中用于将两个元素组合在一起。

from langchain_openai import ChatOpenAIfrom langchain_core.messages import HumanMessage, SystemMessagefrom langchain_core.output_parsers import StrOutputParsermodel = ChatOpenAI(model="hunyuan-lite", api_key="申请的key", base_url="https://api.hunyuan.cloud.tencent.com/v1/")messages = [    SystemMessage(content="将以下内容从英语翻译成意大利语"),    HumanMessage(content="你好"),]parser = StrOutputParser()chain = model | parserprint(chain.invoke(messages))

2. 提示词模板

直接将消息列表传递给语言模型。这些消息列表来自哪里?通常,它是由用户输入和应用逻辑的组合构建而成的。这个应用逻辑通常会将原始用户输入转换为准备传递给语言模型的消息列表。常见的转换包括添加系统消息或使用用户输入格式化模板。

PromptTemplates 是 LangChain 中的一个概念,旨在帮助进行这种转换。它们接收原始用户输入并返回准备传递给语言模型的数据(提示)。

在这里创建一个 PromptTemplate。它将接收两个用户变量:

from langchain_core.prompts import ChatPromptTemplate# 创建一个字符串,我们将格式化为系统消息:system_template = "将以下内容从中文翻译成{language}:"# 创建 PromptTemplate。这将是 system_template 和一个更简单的模板的组合prompt_template = ChatPromptTemplate.from_messages(    [("system", system_template), ("user", "{text}")])# 此提示词模板的输入是一个字典。我们可以单独使用这个提示词模板result = prompt_template.invoke({"language": "italian", "text": "hi"})

输出后可以看到它返回一个 ChatPromptValue,由两个消息组成。

ChatPromptValue(messages=[SystemMessage(content='将以下内容从英语翻译成意大利语:', additional_kwargs={}, response_metadata={}), HumanMessage(content='你好', additional_kwargs={}, response_metadata={})])

完整示例

from langchain_openai import ChatOpenAIfrom langchain_core.messages import HumanMessage, SystemMessagefrom langchain_core.prompts import ChatPromptTemplatemodel = ChatOpenAI(model="hunyuan-lite", api_key="申请的key", base_url="https://api.hunyuan.cloud.tencent.com/v1/")system_template = "将以下内容从中文翻译成{language}:"prompt_template = ChatPromptTemplate.from_messages(    [("system", system_template), ("user", "{text}")])result = prompt_template.invoke({"language": "意大利语", "text": "你好"})print(result)

我们也可以使用 | 运算符创建链解析操作

from langchain_openai import ChatOpenAIfrom langchain_core.messages import HumanMessage, SystemMessagefrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplatemodel = ChatOpenAI(model="hunyuan-lite", api_key="申请的key", base_url="https://api.hunyuan.cloud.tencent.com/v1/")system_template = "将以下内容从中文翻译成{language}:"prompt_template = ChatPromptTemplate.from_messages(    [("system", system_template), ("user", "{text}")])parser = StrOutputParser()chain = prompt_template | model | parserchain.invoke({"language": "意大利语", "text": "你好"})

'Ciao'

本章讲解了如何构建一个简单的 LangChain 应用,现在调用大模型还没有记忆功能,下一篇将讲解如何实现对话的上下文

Fish AI Reader

Fish AI Reader

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

FishAI

FishAI

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

联系邮箱 441953276@qq.com

相关标签

LangChain LLM 大语言模型 教程 Python
相关文章