LangChain API 调用语言模型
LangChain 核心功能轻松调用大语言模型附代码示例在大语言模型LLM应用开发中直接与各种模型 API 进行交互可能会变得复杂和繁琐。不同的模型提供商如 OpenAI、Google、Anthropic有不同的 SDK 和数据格式。LangChain 的核心价值之一就是提供了一个统一、标准化的接口来与这些模型进行交互极大地简化了开发流程。本文将详细介绍如何通过 LangChain 调用语言模型并提供清晰的代码示例帮助您快速上手。LangChain 的模型抽象两种基本类型LangChain 将模型抽象为两种主要类型以适应不同的应用场景LLMs: 这是对传统文本补全模型的封装。您输入一段文本prompt它会返回一段补全的文本。这种模型适合简单的问答或文本生成任务。ChatModels: 这是对更先进的对话模型的封装。它的输入是“消息列表”List of Messages输出也是一个“消息”Message。这种结构更适合构建多轮对话的聊天机器人因为它能更好地处理上下文和角色扮演。在当前的开发实践中ChatModels是更常用、更推荐的选择因为它们通常是更新、更强大的模型如 GPT-4、Claude 3并且其基于消息的输入方式更加结构化和灵活。第一步环境准备与安装在开始之前请确保您已经安装了必要的 Python 库。我们将以 OpenAI 的模型为例因此需要安装langchain-openai。pip install langchain langchain-openai python-dotenv为了安全地管理您的 API 密钥建议使用.env文件。在您的项目根目录下创建一个名为.env的文件并写入以下内容OPENAI_API_KEYsk-YourOpenAI_API_Key第二步调用聊天模型ChatModels- 推荐方式ChatModels是构建现代 LLM 应用的基础。它的交互模式模仿了真实的对话通过不同角色的消息如SystemMessage,HumanMessage,AIMessage来构建上下文。1. 基本调用最简单的调用方法是实例化一个ChatOpenAI对象并向其传递一个消息列表。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_namegpt-4o, temperature0) # 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允许我们定义一个包含变量的对话结构。from langchain_core.prompts import ChatPromptTemplate # 创建一个包含输入变量 {topic} 的模板 prompt_template ChatPromptTemplate.from_messages( [ (system, 你是一名专业的文案撰写人擅长写出吸引人的社交媒体帖子。), (human, 为关于“{topic}”的产品写一个三句话的推广文案。), ] )2. 使用 LCEL 构建调用链LCEL 使用管道符|将不同的组件链接在一起形成一个处理流水线。这使得代码非常简洁且易于理解。# 使用 LCEL 将 prompt, model 链接在一起 # 这是一个简单的 Chain (调用链) chain prompt_template | chat # 调用链并传入变量 response chain.invoke({topic: 新款智能手表}) print(文案内容:) print(response.content) # 文案内容: # 准备好迎接未来的科技浪潮了吗我们的新款智能手表不仅是时间的记录者更是您手腕上的健康伙伴和智能助理。现在就体验前所未有的便捷与时尚让每一刻都充满智慧。这种方法的优势在于可重用性prompt_template和chain可以被重复使用只需传入不同的topic。模块化可以轻松地在链中添加或替换组件例如在最后加上一个输出解析器| StrOutputParser()。第四步调用传统 LLMs较少使用虽然ChatModels是主流但了解如何调用基本的LLM也是有帮助的。其接口更简单只接受和返回字符串。from langchain_openai import OpenAI # 1. 初始化 LLM 模型 # 注意这里导入的是 OpenAI而不是 ChatOpenAI llm OpenAI(model_namegpt-3.5-turbo-instruct, temperature0) # 2. 准备输入文本 text 请解释一下什么是黑洞 # 3. 调用并打印结果 response llm.invoke(text) print(response) # 黑洞是一种极其神秘和强大的天体它的引力非常巨大以至于任何物质甚至光都无法逃脱它的引力范围。 # ... (省略部分输出)结论LangChain 通过其标准化的ChatModels和LLMs接口以及强大的PromptTemplate和 LCEL彻底改变了与大语言模型交互的方式。对于新项目强烈建议遵循以下最佳实践优先使用ChatModels因为它更强大且输入结构更清晰。利用ChatPromptTemplate管理你的提示使其动态化和可重用。拥抱 LangChain 表达式语言LCEL通过|符号构建清晰、模块化的调用链。掌握了这些核心技巧您就已经迈出了使用 LangChain 构建复杂、强大且可靠的 LLM 应用的关键一步。学习资源推荐如果你想更深入地学习大模型以下是一些非常有价值的学习资源这些资源将帮助你从不同角度学习大模型提升你的实践能力。一、全套AGI大模型学习路线AI大模型时代的学习之旅从基础到前沿掌握人工智能的核心技能​因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取二、640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示​因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取三、AI大模型经典PDF籍随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取四、AI大模型商业化落地方案作为普通人入局大模型时代需要持续学习和实践不断提高自己的技能和认知水平同时也需要有责任感和伦理意识为人工智能的健康发展贡献力量。

相关新闻

Unity集成PICO SDK 2.3.0:5分钟实现手势识别(点赞/握拳)交互Demo

Unity集成PICO SDK 2.3.0:5分钟实现手势识别(点赞/握拳)交互Demo

1. 项目概述与核心价值最近在捣鼓PICO VR设备,发现它的手势识别功能潜力巨大,但很多刚接触的开发者,包括我一开始,都觉得这玩意儿门槛不低。官方文档虽然详尽,但面对一堆API和概念,想快速做出一个能“动起来…

2026/8/2 19:21:13 阅读更多 →
大模型技术 Ollama 概述

大模型技术 Ollama 概述

如果说 LangChain 是构建 AI 应用的“大脑框架”,那么 Ollama 就是让这个大脑在你的本地电脑上跑起来的“发动机”。 一、 什么是 Ollama? Ollama 是一个开源的本地大模型运行框架,旨在让用户能够像使用 Docker 一样,通过简单的命…

2026/8/2 19:20:13 阅读更多 →
VC6.0下从零实现Web服务器:WinSock、多线程与HTTP协议解析实战

VC6.0下从零实现Web服务器:WinSock、多线程与HTTP协议解析实战

1. 项目概述:为什么要在VC6.0上“复古”实现Web服务器?最近在整理旧硬盘时,翻出了十几年前用VC6.0写的一些代码,其中一个“玩具”级别的Web服务器项目让我感触颇深。现在随便一个框架或者现成的组件就能轻松搭建服务器&#xff0c…

2026/8/2 19:20:13 阅读更多 →

最新新闻

CoffeeCatch完全指南:如何优雅捕获Android JNI中的致命信号

CoffeeCatch完全指南:如何优雅捕获Android JNI中的致命信号

CoffeeCatch完全指南:如何优雅捕获Android JNI中的致命信号 【免费下载链接】coffeecatch CoffeeCatch, a tiny native POSIX signal catcher (especially useful for JNI code on Android/Dalvik) 项目地址: https://gitcode.com/gh_mirrors/co/coffeecatch …

2026/8/2 19:53:34 阅读更多 →
Cocos Creator项目创建与目录结构全解析:从入门到高效开发

Cocos Creator项目创建与目录结构全解析:从入门到高效开发

1. 项目概述:从零到一,理解你的第一个Cocos项目 刚接触Cocos Creator,很多朋友在成功安装编辑器后,面对那个简洁的启动界面,心里可能既兴奋又有点茫然:点击“新建项目”之后呢?这一大堆自动生成…

2026/8/2 19:53:34 阅读更多 →
Unity游戏Windows安装包制作指南:从构建到专业分发

Unity游戏Windows安装包制作指南:从构建到专业分发

1. 项目概述:从Unity构建到Windows安装包的最后一公里 如果你用Unity3D开发过PC游戏或者桌面应用,肯定经历过这个阶段:在Unity编辑器的Build Settings里满怀期待地点击“Build”,生成一个包含.exe和一堆数据文件的文件夹。然后&am…

2026/8/2 19:53:34 阅读更多 →
Unity粒子特效优化指南:风暴与暴风雪效果的性能调优实战

Unity粒子特效优化指南:风暴与暴风雪效果的性能调优实战

1. 项目概述:当粒子遇上风暴在Unity里做特效,尤其是像风暴、暴风雪这种大规模、高密度的自然现象,绝对是性能的“试金石”。很多开发者,包括我自己在早期项目里,都踩过这样的坑:场景里放一个看起来很酷的暴…

2026/8/2 19:53:34 阅读更多 →
终极完整指南:CMWTAT Digital Edition Windows数字权利激活工具深度解析

终极完整指南:CMWTAT Digital Edition Windows数字权利激活工具深度解析

终极完整指南:CMWTAT Digital Edition Windows数字权利激活工具深度解析 【免费下载链接】CMWTAT_Digital_Edition CloudMoe Windows 10/11 Activation Toolkit get digital license, the best open source Win 10/11 activator in GitHub. GitHub 上最棒的开源 Win…

2026/8/2 19:53:34 阅读更多 →
程序员究竟该干什么?技术向善,什么才叫做向善

程序员究竟该干什么?技术向善,什么才叫做向善

一、那架还在飞的战机 你见过那个画面吗?人类早就死光了,变成骷髅了,但天空里的战机还在按程序轰炸。无人机还在互相锁定、开火、投弹。地面上什么都没有了,连废墟都懒得炸了,但它们还在飞。因为程序没停。 这不是科幻…

2026/8/2 19:52:34 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →