LangChain agent 开发框架学习笔记

发布时间:2026/10/2 5:30:34

LangChain agent 开发框架学习笔记
1. 简介LLM 大模型应用开发框架, 用来构建 agent.LangChain 提供统一接口可连接大模型、Prompt、向量数据库、工具调用、记忆系统以及 Agent 工作流.它是 python 语言, 虽然也有 js 版本叫 LangChain.js, 但生态和更新速度都不如 Python.2. 核心组件LLM连接 OpenAI、Claude、Gemini 等大模型PromptTemplate管理 Prompt 模板Chains构建多步骤 AI 工作流Memory实现多轮对话记忆Tools调用搜索、数据库、API 等工具Agents让 AI 自动决策与执行任务Vector Store连接向量数据库实现 RAG3. 极简 demo最简单的 LangChain 阿里云大模型 Demoimportsys sys.stdout.reconfigure(encodingutf-8)fromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.prompt_valuesimportChatPromptValuefromlangchain_core.messagesimportAIMessage load_dotenv()llmChatOpenAI(modelqwen-plus)defdemo_lcel():写法一LCEL 管道风格推荐chain(ChatPromptTemplate.from_messages([(human,{question})])|llm|StrOutputParser())resultchain.invoke({question:你好请用一句话介绍你自己})print(result)defdemo_step_by_step()-None:写法二普通逐步调用prompt:ChatPromptTemplateChatPromptTemplate.from_messages([(human,{question})])parser:StrOutputParserStrOutputParser()# 第一步模板填充变量生成提示词prompt_value:ChatPromptValueprompt.invoke({question:你好请用一句话介绍你自己})# 第二步调用 LLM返回 AIMessage 对象ai_message:AIMessagellm.invoke(prompt_value)# 第三步解析器提取纯文本result:strparser.invoke(ai_message)print(result)# demo_lcel()demo_step_by_step()4. llm.invoke() 调用链4.1 http 请求背后是 httpx 框架的 http post 请求.ChatOpenAI.invoke() ← langchain-core 入口 └→ _generate() ← langchain_openai/chat_models/base.py:1695 └→ self.client.with_raw_response.create(**payload) ← 进入 openai SDK └→ SyncAPIClient.request() ← openai/_base_client.py:995 └→ _send_request() ← openai/_base_client.py:957 └→ self._client.send(request) ← httpx.Client.send() 真正的 HTTP 请求4.2 LLM 传参调用 LLM 的相关参数见下.# 位于 site-packages/openai/resources/chat/completions/completions.pyclassCompletions(SyncAPIResource):required_args([messages,model],[messages,model,stream])defcreate(...):returnself._post(/chat/completions,bodymaybe_transform({messages:messages,model:model,audio:audio,frequency_penalty:frequency_penalty,function_call:function_call,functions:functions,logit_bias:logit_bias,logprobs:logprobs,max_completion_tokens:max_completion_tokens,max_tokens:max_tokens,metadata:metadata,modalities:modalities,moderation:moderation,n:n,parallel_tool_calls:parallel_tool_calls,prediction:prediction,presence_penalty:presence_penalty,prompt_cache_key:prompt_cache_key,prompt_cache_options:prompt_cache_options,prompt_cache_retention:prompt_cache_retention,reasoning_effort:reasoning_effort,response_format:response_format,safety_identifier:safety_identifier,seed:seed,service_tier:service_tier,stop:stop,store:store,stream:stream,stream_options:stream_options,temperature:temperature,tool_choice:tool_choice,tools:tools,top_logprobs:top_logprobs,top_p:top_p,user:user,verbosity:verbosity,web_search_options:web_search_options,},completion_create_params.CompletionCreateParamsStreamingifstreamelsecompletion_create_params.CompletionCreateParamsNonStreaming,),optionsmake_request_options(extra_headersextra_headers,extra_queryextra_query,extra_bodyextra_body,timeouttimeout,security{bearer_auth:True},),cast_toChatCompletion,streamstreamorFalse,stream_clsStream[ChatCompletionChunk],)附录LangChain 官网

相关新闻

Linux命令-seq(生成数字序列)

Linux命令-seq(生成数字序列)

2026/9/30 17:19:43

Linux命令-seq(生成数字序列)快速参考基本语法常用选项实际应用场景高级用法在脚本中使用 seqseq 与 {..} 扩展对比性能对比故障排查总结快速参考 seq(sequence)是用于生成数字序列的命令行工具。它按指定步长生成从起始值到结束…

React+Express+AI构建实时热点追踪系统

React+Express+AI构建实时热点追踪系统

2026/9/28 1:23:28

1. 项目概述:AI驱动的全网热点追踪系统 这个名为"又一个新项目开源,让AI帮你盯全网热点!"的项目,本质上是一个基于现代Web技术栈构建的智能信息聚合平台。它通过AI算法自动抓取、分析和归类全网热点内容,帮助…

AcWing算法提高课思路速查:基础算法

AcWing算法提高课思路速查:基础算法

2026/9/6 15:59:17

题目模板思路90. 64位整数乘法位运算龟速乘95. 费解的开关递推与递归枚举起点状态97. 约数之和递推与递归公式/递归分治98. 分形之城递推与递归化归大型建系模拟99. 激光炸弹前缀和与差分二维前缀和枚举100. 增减序列前缀和与差分构造贪心(反证法)102. 最…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/29 22:00:59

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/30 20:35:35

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/30 20:35:38

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/10/2 4:43:07

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/10/2 4:42:51

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/30 8:20:32

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…