LangChain API 调用语言模型

好的,这是一篇关于如何使用 LangChain API 调用语言模型的详细文章,并附有代码示例。


LangChain 核心功能:轻松调用大语言模型(附代码示例)

在大语言模型(LLM)应用开发中,直接与各种模型 API 进行交互可能会变得复杂和繁琐。不同的模型提供商(如 OpenAI、Google、Anthropic)有不同的 SDK 和数据格式。LangChain 的核心价值之一就是提供了一个统一、标准化的接口来与这些模型进行交互,极大地简化了开发流程。

本文将详细介绍如何通过 LangChain 调用语言模型,并提供清晰的代码示例,帮助您快速上手。

LangChain 的模型抽象:两种基本类型

LangChain 将模型抽象为两种主要类型,以适应不同的应用场景:

  1. LLMs: 这是对传统文本补全模型的封装。您输入一段文本(prompt),它会返回一段补全的文本。这种模型适合简单的问答或文本生成任务。
  2. ChatModels: 这是对更先进的对话模型的封装。它的输入是"消息列表"(List of Messages),输出也是一个"消息"(Message)。这种结构更适合构建多轮对话的聊天机器人,因为它能更好地处理上下文和角色扮演。

在当前的开发实践中,ChatModels 是更常用、更推荐的选择,因为它们通常是更新、更强大的模型(如 GPT-4、Claude 3),并且其基于消息的输入方式更加结构化和灵活。

第一步:环境准备与安装

在开始之前,请确保您已经安装了必要的 Python 库。我们将以 OpenAI 的模型为例,因此需要安装 langchain-openai

bash 复制代码
pip install langchain langchain-openai python-dotenv

为了安全地管理您的 API 密钥,建议使用 .env 文件。在您的项目根目录下创建一个名为 .env 的文件,并写入以下内容:

ini 复制代码
OPENAI_API_KEY="sk-YourOpenAI_API_Key"

第二步:调用聊天模型(ChatModels)- 推荐方式

ChatModels 是构建现代 LLM 应用的基础。它的交互模式模仿了真实的对话,通过不同角色的消息(如 SystemMessage, HumanMessage, AIMessage)来构建上下文。

1. 基本调用

最简单的调用方法是实例化一个 ChatOpenAI 对象,并向其传递一个消息列表。

python 复制代码
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage

# 加载 .env 文件中的环境变量
load_dotenv()

# 1. 初始化模型
# model_name 可以指定具体的模型,如 "gpt-4", "gpt-3.5-turbo"
# temperature 控制输出的随机性,0 表示最确定,1 表示最随机
chat = ChatOpenAI(model_name="gpt-4o", temperature=0)

# 2. 准备输入消息
# SystemMessage 定义了 AI 的角色和行为准则
# HumanMessage 代表用户的输入
messages = [
    SystemMessage(content="你是一名专业的旅行规划师。"),
    HumanMessage(content="我应该去哪里度过一个为期三天的浪漫周末?请推荐一个城市并说明理由。"),
]

# 3. 调用模型并获取响应
# .invoke() 方法是 LangChain 中执行调用的标准方法
response = chat.invoke(messages)

# 4. 打印结果
print("AI的回答:")
print(response.content)

# AIMessageChunk(content='当然!对于一个为期三天的浪漫周末,我强烈推荐**法国的巴黎**。\n\n**理由如下:**\n\n1.  **无与伦比的浪漫氛围**:巴黎被誉为"爱之城",其街道、塞纳河畔、古老的建筑和迷人的咖啡馆都充满了浪漫气息。与伴侣在蒙马特高地漫步,或是在埃菲尔铁塔下欣赏夜景,都是非常难忘的体验。\n\n2.  **世界级的艺术与文化**:你们可以参观卢浮宫,欣赏《蒙娜丽莎》的微笑;也可以去奥赛博物馆,沉浸在印象派的画作中。丰富的艺术展览为你们的旅行增添了文化深度。\n\n3.  **精致的美食体验**:从米其林星级餐厅到街角的面包店,巴黎的美食总能满足你的味蕾。一起品尝法式蜗牛、马卡龙和现烤的可颂面包,享受味觉上的盛宴。\n\n4.  **便捷的交通**:巴黎的公共交通系统非常发达,地铁可以轻松带你们到达城市的任何一个角落,让你们在有限的时间里高效地游览。')

在这个例子中,SystemMessage 告诉模型它应该扮演什么角色,而 HumanMessage 则是用户的具体问题。模型的返回结果是一个 AIMessage 对象,其 .content 属性包含了生成的文本。

第三步:结合 PromptTemplate 和 LCEL 实现模块化调用

在实际应用中,我们很少直接硬编码提问。更好的方式是使用 PromptTemplate 来动态地构建输入。LangChain 表达式语言(LCEL)则提供了一种优雅的方式将提示、模型和输出解析器"链接"在一起。

这被认为是 LangChain 的标准实践

1. 创建提示模板

ChatPromptTemplate 允许我们定义一个包含变量的对话结构。

python 复制代码
from langchain_core.prompts import ChatPromptTemplate

# 创建一个包含输入变量 {topic} 的模板
prompt_template = ChatPromptTemplate.from_messages(
    [
        ("system", "你是一名专业的文案撰写人,擅长写出吸引人的社交媒体帖子。"),
        ("human", "为关于"{topic}"的产品写一个三句话的推广文案。"),
    ]
)

2. 使用 LCEL 构建调用链

LCEL 使用管道符 | 将不同的组件链接在一起,形成一个处理流水线。这使得代码非常简洁且易于理解。

python 复制代码
# 使用 LCEL 将 prompt, model 链接在一起
# 这是一个简单的 Chain (调用链)
chain = prompt_template | chat

# 调用链,并传入变量
response = chain.invoke({"topic": "新款智能手表"})

print("文案内容:")
print(response.content)

# 文案内容:
# 准备好迎接未来的科技浪潮了吗?我们的新款智能手表不仅是时间的记录者,更是您手腕上的健康伙伴和智能助理。现在就体验前所未有的便捷与时尚,让每一刻都充满智慧。

这种方法的优势在于:

  • 可重用性prompt_templatechain 可以被重复使用,只需传入不同的 topic
  • 模块化 :可以轻松地在链中添加或替换组件,例如在最后加上一个输出解析器 | StrOutputParser()

第四步:调用传统 LLMs(较少使用)

虽然 ChatModels 是主流,但了解如何调用基本的 LLM 也是有帮助的。其接口更简单,只接受和返回字符串。

python 复制代码
from langchain_openai import OpenAI

# 1. 初始化 LLM 模型
# 注意这里导入的是 OpenAI,而不是 ChatOpenAI
llm = OpenAI(model_name="gpt-3.5-turbo-instruct", temperature=0)

# 2. 准备输入文本
text = "请解释一下什么是黑洞?"

# 3. 调用并打印结果
response = llm.invoke(text)

print(response)

# 黑洞是一种极其神秘和强大的天体,它的引力非常巨大,以至于任何物质,甚至光,都无法逃脱它的引力范围。
# ... (省略部分输出)

结论

LangChain 通过其标准化的 ChatModelsLLMs 接口,以及强大的 PromptTemplate 和 LCEL,彻底改变了与大语言模型交互的方式。对于新项目,强烈建议遵循以下最佳实践:

  1. 优先使用 ChatModels,因为它更强大且输入结构更清晰。
  2. 利用 ChatPromptTemplate 管理你的提示,使其动态化和可重用。
  3. 拥抱 LangChain 表达式语言(LCEL) ,通过 | 符号构建清晰、模块化的调用链。

掌握了这些核心技巧,您就已经迈出了使用 LangChain 构建复杂、强大且可靠的 LLM 应用的关键一步。

相关推荐
元Y亨H1 小时前
大模型技术 LangChain 概述
langchain·llm
元Y亨H1 小时前
大模型技术 提示词模板 概述
langchain·llm
元Y亨H7 小时前
大模型技术 模型调用结果解析 概述
google·langchain·llm
元Y亨H7 小时前
大模型技术 Ollama 概述
llm·ollama
chaors8 小时前
DeepResearchSystem 0x06:LLM as Judge
llm·agent·ai编程
mingo_敏11 小时前
DeepAgents : 权限(Permissions)
人工智能·深度学习·langchain
武子康12 小时前
GPT-5.6 Luna 降价 80%:Agent 真正该重算的是单次成功成本
人工智能·chatgpt·llm
眼泪划过的星空17 小时前
基于 LangChain 框架构建本地化 RAG 系统:无需调用云端 API 的完整实践
人工智能·langchain
Michaelliu_dev18 小时前
多模态大模型推理流程解析
人工智能·llm·多模态大模型·vit·llava·rope·mllm