
LangChain
文章平均质量分 95
LangChain
彬彬侠
人工智能(Python)算法工程师、后端(Java)工程师、嵌入式工程师
展开
-
【LangChain】langchain_core.prompts.ChatPromptTemplate 类:为聊天模型设计的提示模板类
langchain_core.prompts.ChatPromptTemplate 是 LangChain 框架中用于聊天模型的核心提示工具,通过定义结构化的消息序列和动态变量,支持对话上下文管理、问答系统和代理应用。它提供了灵活的创建方法(如 from_messages)、强大的功能(如 partial 和 invoke)以及与 LangChain 生态系统的无缝集成。掌握 ChatPromptTemplate 的使用方法,可以帮助开发者高效构建复杂的 LLM 应用。原创 2025-05-19 10:20:36 · 499 阅读 · 0 评论 -
【Python】Python 的格式化字符串(f-string)
Python 的格式化字符串(f-string,格式化字符串字面量)是 Python 3.6 引入的一种强大且简洁的字符串格式化工具,通过在字符串前添加 f 或 F 前缀,并使用花括号 {} 嵌入变量或表达式,实现动态字符串生成。旨在提供比传统 % 格式化、str.format() 和 string.Template 更简洁、可读且高效的方式。f-string 允许在字符串字面量中直接嵌入 Python 表达式,运行时动态求值。原创 2025-05-19 10:20:13 · 803 阅读 · 0 评论 -
【LangChain】langchain_core.documents.Document 类:封装文本内容(page_content)及其相关元数据(metadata)
Document 类是 LangChain 框架中用于表示文档的标准化数据结构,继承自 BaseMedia 类。它设计用于存储一段文本内容(page_content)及其相关元数据(metadata),便于在 LLM 应用中进行文档管理、处理和检索。它在文档加载、文本分割、向量存储和问答系统等场景中扮演重要角色。原创 2025-05-19 10:19:50 · 613 阅读 · 0 评论 -
【LangChain】langchain_core.retrievers.BaseRetriever 类:定义文档检索器标准的抽象基类
langchain_core.retrievers.BaseRetriever 是 LangChain 框架中定义文档检索系统标准接口的抽象基类,通过支持同步和异步操作、批量处理和流式输出,为 RAG 系统、代理系统和自定义检索逻辑提供了强大支持。其灵活的 Runnable 接口和元数据管理使其易于集成到复杂工作流中。通过子类化实现自定义检索逻辑,结合 Embeddings、VectorStoreRetriever 和 LangChain 生态系统,开发者可以构建高效、精准的检索系统。遵循最佳实践并注意版本原创 2025-05-19 10:19:29 · 379 阅读 · 0 评论 -
【LangChain】langchain_core.vectorstores.VectorStoreRetriever 类:将向量存储(VectorStore)包装为检索器(Retriever)
VectorStoreRetriever 是 langchain_core.vectorstores 模块中的类,继承自 BaseRetriever,通过包装向量存储实现文档检索功能。向量存储是 LangChain 中用于存储文本嵌入向量(embeddings)的组件,支持高效的语义搜索。VectorStoreRetriever 将向量存储的功能封装为检索器,接受非结构化查询(如文本字符串),返回与查询语义最相关的文档列表。原创 2025-05-19 10:18:47 · 506 阅读 · 0 评论 -
【LangChain】langchain_core.embeddings.fake.(FakeEmbeddings、DeterministicFakeEmbedding):用于测试和开发的虚假嵌入模型
langchain_core.embeddings.fake 模块通过 FakeEmbeddings 和 DeterministicFakeEmbedding 提供了虚假嵌入模型,专为 LangChain 管道的测试和开发设计。FakeEmbeddings 生成随机嵌入,适合验证基本逻辑;DeterministicFakeEmbedding 生成确定性嵌入,适合需要一致结果的测试。两者均实现 Embeddings 接口,支持同步和异步操作,与 LangChain 的向量存储、检索器和链无缝集成。模块高效、轻原创 2025-05-19 00:39:49 · 630 阅读 · 0 评论 -
【LangChain】langchain_core.embeddings.Embeddings 类:定义文本嵌入模型的抽象基类
langchain_core.embeddings.Embeddings 是 LangChain 框架中用于定义文本嵌入模型标准接口的抽象基类,通过 embed_documents 和 embed_query 方法支持文本向量化,广泛应用于语义搜索、向量存储和 RAG 应用。其统一接口和异步支持确保了不同嵌入模型的互换性和高效性。结合具体子类(如 OpenAIEmbeddings)、向量存储和 LangChain 生态系统,开发者可以构建强大的语义处理系统。遵循最佳实践并注意版本要求,将有助于充分发挥其功能原创 2025-05-19 00:39:37 · 358 阅读 · 0 评论 -
【LangChain】langchain_core.load 模块:提供了序列化和反序列化的工具函数
langchain_core.load 模块包含一组函数,用于处理 LangChain 对象的序列化和反序列化。该模块依赖于 langchain_core.load.serializable.Serializable 基类,后者为 LangChain 对象提供了序列化能力。序列化:通过 dumpd 和 dumps 将 Serializable 对象转为 Python 字典或 JSON 字符串。通过 load 和 loads 从字典或 JSON 字符串重建对象,支持 secrets_map 注入敏感信息(如原创 2025-05-18 01:17:41 · 529 阅读 · 0 评论 -
【LangChain】langchain_core.load.Serializable 类:为对象提供序列化和反序列化能力的抽象基类
Serializable 是 langchain_core.load.serializable 模块中的抽象基类,继承自 Pydantic 的 BaseModel 和 Python 的 ABC(抽象基类)。它为 LangChain 对象提供了序列化支持,允许将对象的状态转换为 JSON 格式,以便保存、传输或在不同运行时加载。序列化后的对象可以通过反序列化恢复为原始状态,确保工作流的可移植性和持久性。结合 dumpd、dumps、load 和 loads 函数,开发者可以轻松保存和加载链、代理和工具,适用于原创 2025-05-18 01:17:21 · 466 阅读 · 0 评论 -
【LangChain】langchain_core.runnables.chain 装饰器函数:将普通函数转换为 Runnable 对象
@chain 装饰器位于 langchain_core.runnables.base 模块的 chain 装饰器函数,用于将普通的 Python 函数转换为 LangChain 的 Runnable 对象。Runnable 是 LangChain 生态系统的核心组件,支持同步、异步、批处理和流式处理等操作。通过 @chain 装饰器,开发者可以将自定义逻辑无缝集成到 LangChain 的工作流中,与其他组件(如提示模板、语言模型、输出解析器)组合成复杂的处理链。原创 2025-05-17 15:43:27 · 704 阅读 · 0 评论 -
【LangChain】langchain_core.tools.retriever.create_retriever_tool() 函数:将 BaseRetriever 实例封装为 Tool 对象
reate_retriever_tool 是 langchain_core.tools.retriever 模块中的函数,旨在将 BaseRetriever 实例封装为 Tool 对象,使其可以作为代理或链的工具使用。检索器(Retriever)是 LangChain 中用于根据查询从数据源(如向量存储或数据库)检索相关文档的组件,而该函数将其转换为一个标准的 BaseTool 子类,允许代理通过查询字符串调用检索功能。原创 2025-05-17 15:34:10 · 661 阅读 · 0 评论 -
【LangChain】langchain_core.tools.render_text_description_and_args() 函数:将工具列表的名称、描述和参数模式渲染为纯文本格式
render_text_description_and_args 是 langchain_core.tools.render 模块中的函数,旨在从一组 BaseTool 对象的 name、description 和 args_schema 属性生成纯文本字符串。输出格式为每行一个工具,显示为“名称(参数1: 类型1, 参数2: 类型2) - 描述”。其标准化的输出格式易于嵌入提示模板,指导语言模型选择和调用工具。结合 BaseTool、StructuredTool、InjectedToolArg 和代理框架原创 2025-05-17 15:28:54 · 858 阅读 · 0 评论 -
【LangChain】langchain_core.tools.render_text_description() 函数:将工具列表的名称和描述渲染为纯文本格式
render_text_description 是 langchain_core.tools.render 模块中的函数,旨在从一组 BaseTool 对象的 name 和 description 属性生成纯文本字符串。输出的格式为每行一个工具,显示为“名称:描述”。其输出格式标准,易于嵌入提示模板,指导语言模型选择和调用工具。结合 BaseTool、StructuredTool 和代理框架,开发者可以构建强大的工具调用能力。遵循最佳实践并注意版本要求,将有助于充分发挥其功能。原创 2025-05-17 15:24:50 · 638 阅读 · 0 评论 -
【LangChain】langchain_core.tools.convert_runnable_to_tool() 函数:将 Runnable 对象转换为 BaseTool 对象
convert_runnable_to_tool 是 langchain_core.tools 模块中的一个实用函数,旨在将 LangChain 的 Runnable 对象转换为 BaseTool 对象。Runnable 是 LangChain 的核心接口,支持同步和异步执行、批处理和流式输出,而 BaseTool 是工具的基类,用于定义代理或链可调用的功能单元。该函数根据 Runnable 的输入模式自动选择创建 Tool(适合单一字符串输入)或 StructuredTool(适合多参数输入),并配置执行原创 2025-05-17 15:15:23 · 795 阅读 · 0 评论 -
【LangChain】langchain_core.tools.get_all_basemodel_annotations() 函数:从Pydantic BaseModel 类中提取所有字段的类型注解
get_all_basemodel_annotations 是 langchain_core.tools 模块中的一个函数,旨在从给定的 Pydantic BaseModel 类及其所有父类中收集字段的类型注解,返回一个字段名到类型的字典。该函数主要用于 LangChain 工具的输入模式生成,确保工具的 args_schema 包含所有继承的字段,特别是在处理复杂继承结构和泛型模型时。原创 2025-05-17 12:58:32 · 551 阅读 · 0 评论 -
【LangChain】langchain_core.tools.create_schema_from_function() 函数:从函数签名和文档字符串自动生成 Pydantic 模型(schema)
create_schema_from_function 是 langchain_core.tools 模块中的一个函数,旨在从 Python 函数的签名(参数和类型注解)以及可选的文档字符串生成 Pydantic 模型。这种模型通常用作工具的 args_schema,确保工具输入的类型安全和结构完整性。该函数简化了 LangChain 工具创建过程,特别是在定义需要多参数输入的复杂工具时。原创 2025-05-17 12:48:13 · 759 阅读 · 0 评论 -
【LangChain】langchain_core.tools.InjectedToolCallId 类:工具函数中注入工具调用 ID 的注解
InjectedToolCallId 是 langchain_core.tools 模块中的一个注解,用于标记工具函数中的参数,使其在运行时自动接收工具调用 ID(tool call ID)。工具调用 ID 是一个唯一的字符串标识符,由系统在模型决定调用工具时生成,用于跟踪和管理工具调用。InjectedToolCallId 确保工具函数知道它正在响应哪个具体的工具调用,特别在多工具调用并行或顺序执行的场景中非常有用。原创 2025-05-17 12:42:26 · 965 阅读 · 0 评论 -
【LangChain】langchain_core.tools.RetrieverInput 类:定义检索器工具输入结构的 Pydantic 模型
RetrieverInput 是一个 Pydantic 模型,定义了检索器工具的输入结构,通常包含一个查询字符串字段(query),用于指定要检索的内容。检索器工具是 LangChain 中用于从数据源(如向量存储或数据库)检索相关文档的工具,广泛应用于代理(Agents)、链(Chains)或检索增强生成(RAG)场景。RetrieverInput 确保输入符合预期格式,通过 Pydantic 的验证机制增强类型安全。原创 2025-05-17 12:35:35 · 818 阅读 · 0 评论 -
【LangChain】langchain_core.tools.StructuredTool 类:定义支持多输入的工具
StructuredTool 是 langchain_core.tools 模块中的一个类,继承自 BaseTool,实现了 Runnable 接口。它允许开发者创建可以处理多个输入的工具,例如需要多个参数的数学运算、API 调用或数据处理任务。通过 Pydantic 模型定义输入结构,StructuredTool 确保输入验证和类型安全,与 LangChain 的代理(Agents)、链(Chains)和 LangChain Expression Language (LCEL) 无缝集成。原创 2025-05-17 12:27:37 · 916 阅读 · 0 评论 -
【LangChain】langchain_core.tools 模块:创建、配置和管理工具
langchain_core.tools 模块提供了一套类和函数,用于创建、配置和管理工具。工具是封装特定功能的组件,例如数据检索、数学计算或 API 调用,允许语言模型通过调用工具与外部系统交互。该模块通过标准化的接口和灵活的配置选项,确保工具与 LangChain 的可运行对象(Runnable)生态系统无缝集成。通过基类(如 BaseTool)、工具实现(如 StructuredTool)和实用函数(如 @tool),支持开发者创建自定义工具并集成到复杂应用程序中。其支持输入验证、运行时注入和工件输出原创 2025-05-17 12:13:23 · 1013 阅读 · 0 评论 -
【LangChain】langchain_core.tools.BaseTool 类:可调用工具的核心抽象基类
langchain_core.tools.BaseTool 是 LangChain 框架中用于定义语言模型可调用工具的核心抽象基类。它提供标准接口,支持输入验证、错误处理、工件输出及与 LangChain 可运行对象的集成。开发者通过子类化 BaseTool 定义自定义工具,指定工具名称、描述、输入模式和执行逻辑。它与 @tool 装饰器和 InjectedToolArg 配合使用,适合构建复杂代理系统和模块化工作流。开发者应遵循最佳实践,利用类型提示、清晰描述和最新版本以充分发挥其潜力。原创 2025-05-17 11:06:02 · 632 阅读 · 0 评论 -
【LangChain】langchain_core.tools.tool 装饰器:创建自定义工具
@tool 装饰器位于 langchain_core.tools.convert 模块,用于将 Python 函数或可运行对象转换为 BaseTool 对象,使其与 LangChain 的工具调用机制兼容。它通过分析函数签名和文档字符串,自动生成工具的名称、描述和参数模式,简化工具创建过程。该装饰器特别适合构建基于代理的系统、LangGraph 工作流或自定义链,允许模型调用外部功能并处理输出。原创 2025-05-17 01:08:53 · 716 阅读 · 0 评论 -
【LangChain】langchain_core.tools.InjectedToolArg 类:工具调用参数运行时注入,而非由模型生成
langchain_core.tools.InjectedToolArg 是 LangChain 库中用于工具调用参数注入的注解类,隶属于 langchain_core.tools 模块。它主要用于标记工具函数中的参数,表示这些参数应由运行时上下文(如代理或链)自动注入,而不是由用户输入或模型直接提供。InjectedToolArg 是一个类型注解工具,通常结合 Annotated 类型(来自 Python 的 typing 模块)使用,增强工具函数的灵活性和可维护性。原创 2025-05-17 00:36:14 · 942 阅读 · 0 评论 -
【LangChain】langchain_core.messages.SystemMessage 类:表示系统消息的核心类
langchain_core.messages.SystemMessage 是 LangChain 库中用于表示系统消息的核心类,隶属于 langchain_core.messages 模块。它继承自 BaseMessage,专门用于向语言模型提供初始指令或上下文,以定义模型的行为、语气或角色。核心属性:content:指令内容(字符串或多模态)。role 和 type:固定为 "system"。additional_kwargs、example、id、name、response_metadata:可选字段原创 2025-05-16 10:17:55 · 680 阅读 · 0 评论 -
【LangChain】langchain_core.messages.HumanMessage 类:人类用户输入消息的核心类
langchain_core.messages.HumanMessage 是 LangChain 库中用于表示人类用户输入消息的核心类,隶属于 langchain_core.messages 模块。它继承自 BaseMessage,专门用于封装用户在对话中的输入,如提问或指令,以便语言模型(如聊天模型)能够正确处理。核心属性:content:消息内容(字符串或多模态)。role 和 type:固定为 "human"。additional_kwargs:元数据。example 和 id:可选字段。原创 2025-05-16 10:17:36 · 1020 阅读 · 0 评论 -
【LangChain】langchain_core.messages.ToolMessage 类:工具调用结果的消息类
langchain_core.messages.ToolMessage 是 LangChain 库中用于表示工具调用结果的消息类,继承自 BaseMessage。它的主要作用是将外部工具(如搜索、计算器、数据库查询)的执行结果传递回语言模型(LLM)或代理(Agent),以便模型根据这些结果生成进一步的响应。核心属性:content:工具结果(通常为字符串)。tool_call_id:工具调用 ID。artifact:完整输出(可选)。additional_kwargs:元数据。role 和 type:固定原创 2025-05-16 10:17:06 · 821 阅读 · 0 评论 -
【LangChain】langchain_core.messages.AIMessage 类:AI 模型生成的消息(回答内容、工具调用请求、相关元数据)
langchain_core.messages.AIMessage 是 LangChain 框架中 langchain_core.messages 模块的一个核心类,继承自 BaseMessage。表示聊天模型(如 ChatOpenAI、ChatAnthropic)在响应用户或系统输入时生成的消息。它包含 AI 的回答内容、工具调用请求(如果有)以及相关元数据。核心属性:content:消息内容。tool_calls:工具调用请求。invalid_tool_calls:错误工具调用。additional_k原创 2025-05-16 10:16:49 · 702 阅读 · 0 评论 -
【LangChain】langchain_core.messages.BaseMessage 类:定义对话消息的基本结构和行为的抽象基类
在 LangChain 中,langchain_core.messages.BaseMessage 是 langchain_core.messages 模块中的核心抽象基类,用于表示对话中的消息。它为所有具体消息类型(如 HumanMessage、AIMessage、SystemMessage 等)提供了统一的接口和基础功能。BaseMessage 的设计目标是标准化消息的结构和行为,确保消息能够在聊天模型、代理、记忆模块和其他 LangChain 组件中无缝传递和处理。原创 2025-05-16 10:16:15 · 743 阅读 · 0 评论 -
【LangChain】langchain_core.language_models 模块:定义和管理语言模型(Language Models, LLMs)的接口和行为的抽象基类
在 LangChain 中,langchain_core.language_models 模块是核心模块之一,用于定义和管理语言模型(Language Models, LLMs)的接口和行为。它提供了语言模型的抽象基类,包括 BaseLanguageModel、BaseChatModel 和 BaseLLM,为聊天模型(如 ChatOpenAI)和生成模型(如 OpenAI)提供了统一的基础架构。这个模块的目标是标准化语言模型的交互方式,确保不同提供商的模型能够无缝集成到 LangChain 的链、代理、原创 2025-05-16 10:15:29 · 634 阅读 · 0 评论 -
【LangChain】langchain_core.language_models.BaseChatModel 类:定义聊天模型的核心接口和行为的基类
在 LangChain 中,langchain_core.language_models.BaseChatModel 是一个抽象基类,定义了聊天模型的核心接口和行为。它是 LangChain 生态系统中所有聊天模型(如 ChatOpenAI等)的基石,提供了一致的 API 用于处理对话、工具调用和消息管理。核心方法:invoke、ainvoke:同步/异步调用。stream、astream:流式生成。batch、abatch:批量处理。bind_tools、with_structured_output:工具原创 2025-05-16 10:14:48 · 726 阅读 · 0 评论 -
【LangChain】langchain.chat_models.init_chat_model() 函数:指定模型名称和提供商初始化聊天模型
在 LangChain 中,langchain.chat_models.init_chat_model 是一个用于初始化聊天模型的便捷函数,旨在简化跨多种 LLM 提供商(如 OpenAI、Anthropic、Google、Mistral 等)的模型创建过程。它提供了一个统一的接口,根据指定的模型名称和提供商自动配置并返回一个聊天模型实例,减少手动导入和配置的复杂性。参数:model:模型名称。model_provider:提供商(如 openai、anthropic)。temperature、max_to原创 2025-05-15 16:38:18 · 881 阅读 · 0 评论 -
【LangChain】langchain_core.messages 模块:定义和管理消息对象的核心组件
在 LangChain 中,langchain_core.messages 模块是用于定义和管理消息对象的核心组件,广泛应用于聊天模型、代理(Agents)和对话链(Conversational Chains)。消息对象表示用户、模型、工具或其他实体之间的交互内容,通常用于构建对话上下文、传递工具调用结果或维护对话历史。核心类:HumanMessage:用户输入。AIMessage:模型响应,支持工具调用。SystemMessage:系统指令。ToolMessage:工具结果。ChatMessage:自定义原创 2025-05-15 15:07:56 · 697 阅读 · 0 评论 -
【LangChain】langchain_tavily 库:提供 LangChain 与 Tavily 搜索 API 的集成
langchain_tavily 是一个 LangChain 的官方集成包,用于将 Tavily 的搜索和内容提取功能与 LangChain 的生态系统无缝连接。Tavily 是一个专为大型语言模型(LLM)和 AI 代理设计的搜索引擎,旨在提供实时、准确、事实性的搜索结果,特别适合检索增强生成(RAG)等 AI 工作流。通过 langchain_tavily,开发者可以轻松在 LangChain 应用中集成 Tavily 的搜索和提取工具,增强代理或链的实时信息检索和内容分析能力。原创 2025-05-15 12:47:49 · 991 阅读 · 0 评论 -
【LangChain】langchain_core.runnables.RunnableConfig() 类:控制 Runnable 执行行为的配置对象
在 LangChain 中,RunnableConfig 是一个核心配置对象,用于控制和自定义 LangChain 中 Runnable 对象的执行行为。Runnable 是 LangChain 的基础构建块,涵盖了链(Chains)、代理(Agents)、工具(Tools)等组件。主要字段:callbacks:记录事件。max_iterations:限制循环。max_execution_time:设置超时。metadata:传递上下文。tags、run_name:分类和命名。configurable:动态原创 2025-05-14 18:26:43 · 815 阅读 · 0 评论 -
【LangChain】ainvoke() 方法的 config(RunnableConfig) 参数可配置的设置项
LangChain 中 模型调用时使用的ainvoke() 方法的 config 参数(RunnableConfig)支持以下设置:tags: 任务标签,分组或过滤。metadata: 元数据,记录上下文。callbacks: 回调函数,监控事件。run_name: 运行名称,便于跟踪。max_concurrency: 并发限制,优化资源。recursion_limit: 递归深度,防止循环。configurable: 动态参数,如超时。原创 2025-05-14 12:45:24 · 633 阅读 · 0 评论 -
【LangServe】如何使用 LangServe
LangServe 是一个强大且易用的工具,可以将 LangChain 应用程序快速部署为 REST API。通过简单的几行代码,你可以将复杂的 LLM 工作流(如链、代理、RAG 系统)暴露为高性能的 API,适用于快速原型开发和生产部署。它的 Playground 界面、流式支持和与 FastAPI 的集成使其在开发和调试中非常高效。原创 2025-05-12 13:01:00 · 1149 阅读 · 0 评论 -
【LangServe】什么是 LangServe
LangServe 是一个用于将 LangChain 应用程序快速部署为 REST API 的工具。它是 LangChain 生态系统的一部分,旨在帮助开发者将基于语言模型(LLM)的应用程序以服务化的方式暴露给外部系统或用户。通过 LangServe,你可以轻松地将复杂的 LangChain 工作流(例如链式调用、代理、工具集成等)转化为可通过 HTTP 请求调用的 API 接口,方便集成到其他应用程序或前端界面中。原创 2025-05-12 13:00:42 · 635 阅读 · 0 评论 -
【LangSmith】如何使用 LangSmith
LangSmith 是一个功能强大的平台,通过追踪、数据集管理、评估和监控,简化了 LLM 应用的开发和运维。使用步骤包括:1. 注册账户,安装依赖,配置环境变量。2. 使用 Tracing 调试复杂工作流。3. 创建数据集,运行批量测试。4. 自动化评估,优化模型性能。5. 部署后监控生产环境,支持团队协作。原创 2025-05-12 12:59:28 · 1017 阅读 · 0 评论 -
【LangSmith】什么是 LangSmith
LangSmith 是一个功能全面的 LLM 应用开发平台,通过追踪、数据集管理、评估和监控等功能,帮助开发者从原型到生产高效构建可靠的 LLM 应用。它特别适合基于 LangChain 的项目,但也支持其他 LLM 框架。无论你是想调试复杂的工作流、优化模型性能,还是监控生产环境中的应用,LangSmith 都能提供强大的支持。原创 2025-05-12 12:59:09 · 532 阅读 · 0 评论 -
【LangChain】langchain.globals 模块:管理全局配置和状态(如缓存策略、日志级别、并发限制等)
langchain.globals 模块是 LangChain 中管理全局配置的核心,包含以下关键函数:set_llm_cache / get_llm_cache: 配置和获取 LLM 缓存。set_verbose / get_verbose: 控制日志详细程度。set_debug / get_debug: 启用深入调试。set_max_concurrency / get_max_concurrency: 限制并发量。原创 2025-05-12 12:58:21 · 1091 阅读 · 0 评论