从零开始学习LangChain1.0

实战LLM应用(2):搭建LangChain开发环境 至此,本地langchain架构调用本地部署LLM流程跑通,建议后续每次开发工作在虚拟环境进行。 阅读详情

引言

2025年10月20日, LangChain推出了1.0版本,在对象管理和消息结构上做了一些优化,新老版本的主要区别如下:

旧 LangChain (<1.0)新 LangChain (1.0+)
Chain & Agent 各自为政全部整合为基于 LangGraph 的 Agent 抽象
流程线性、难分支流程图化,可并行、循环、条件判断
简单字符串消息标准化的结构化消息格式(支持 reasoning、tool_call 等)
各模型接口不统一统一消息格式和工具调用接口
向后兼容旧版在 langchain-classic 中保留

本文根据新文档[1]对 LangChain 进行学习和实践,当前采用的版本是1.0.2。

快速上手

首先安装Langchain:

uv add langchain

官方给的示例采用claude-sonnet-4-5作为基础模型,在国内使用颇为不便。

下面的示例,我改成DeepSeek-V3.2,为此,需要额外安装两个依赖:

uv add dotenv langchain-openai

dotenv 用来动态加载环境变量,首先需要创建一个.env文件,然后将硅基流动平台[2]的 API-KEY 填进去:

SILICONFLOW_API_KEY=自己的apikey(sk-开头)

配置完后,就可以运行下面的示例,创建一个调用工具的 agent:

import osfrom dotenv import load_dotenvfrom langchain.agents import create_agentfrom langchain_openai import ChatOpenAIload_dotenv()defget_weather(city: str) -> str:"""Get weather for a given city."""returnf"It's always sunny in {city}!"llm = ChatOpenAI(    base_url="https://api.siliconflow.cn/v1",    api_key=os.getenv("SILICONFLOW_API_KEY"),    model="deepseek-ai/DeepSeek-V3.2-Exp",)agent = create_agent(    model=llm,    tools=[get_weather],    system_prompt="You are a helpful assistant",)response = agent.invoke(    {"messages": [{"role": "user", "content": "what is the weather in sf"}]})print(response)

这个示例是给定了一个函数,用来反馈模拟的天气信息,正常运行,返回的response包含以下内容:

顺序消息类型含义
①HumanMessage用户提问
②AIMessage(带 tool_call)模型决定调用工具
③ToolMessage工具执行的结果
④AIMessage模型根据工具返回结果生成最终回答

在步骤2中,实现第一次交互,模型发现该问题可以通过调用工具解决:

AIMessage(  content="I'll help you get the weather for SF (San Francisco). Let me check that for you.",  tool_calls=[    {"name": "get_weather","args": {"city": "San Francisco"},"id": "019a2bbb8379aef2b02235d132dcf621","type": "tool_call"    })

第4步,模型进行第二次交互,得到最终回答:

AIMessage(  content="It's always sunny in San Francisco! Looks like you'll have great weather there.")

需要注意的是,是否调用工具完全取决于模型自身的想法,有概率存在模型不去调用工具,而导致第一次交互就结束的情况。

在 siliconflow 中,可以在模型的选项卡中,看到模型是否具备工具调用的能力,如果配置了不会调用工具的模型,会出现异常的报错。

核心组件

智能体(Agent)

根据官方文档,智能体的定义是指语言模型与工具相结合,创建能够对任务进行推理、决定使用哪些工具并迭代地寻求解决方案的系统。

智能体停止运行有两种情况:模型发出最终输出或者达到迭代次数限制。

模型(Model)

模型是智能体的推理引擎。它们驱动智能体的决策过程,决定调用哪些工具、如何解释结果以及何时给出最终答案。

模型基本分两种模式:静态模型和动态模型。

静态模型

静态模型可以通过开篇提到的示例进行创建,除了ChatOpenAI之外,还可以用其它的拓展包去适配不同平台,具体可参考API接口文档[3]

from langchain_openai import ChatOpenAIllm = ChatOpenAI(    base_url="https://api.siliconflow.cn/v1",    api_key=os.getenv("SILICONFLOW_API_KEY"),    model="deepseek-ai/DeepSeek-V3.2-Exp",# stream_usage=True,# temperature=None,# max_tokens=None,# timeout=None,# reasoning_effort="low",# max_retries=2,)

除了示例用的基本参数外,还可以设定其它额外参数,这些参数的基本含义如下:

参数名作用说明
stream_usage是否以流式方式返回 token 消耗统计。如果为 True,将实时获取 tokens 消耗信息。
temperature控制生成随机性,0 表示确定性回答,值越大越随机。
max_tokens设置模型最多返回的 token 数。如果不设置则按模型默认值。
timeout请求超时时间,超过该时间则中断请求。
reasoning_effort推理强度设置,通常为 "low", "medium", "high",用于推理模型(如 DeepSeek-R)。越高越慢,思考更多。
max_retriesAPI 调用失败时的最大重试次数。

动态模型

动态模型是指在运行时让Agent运行时根据当前状态和上下文信息,动态去调用不同的模型。

具体方式是wrap_model_call装饰器是创建中间件,然后在创建智能体时,添加middleware参数。

下面这个示例是根据上下文长度进行模型切换,如果上下文长度高于10,则采用advanced_model,否则采用basic_model。

如果需要在国内网络环境下跑通下面这个示例,可以参考上一节的方式去创建模型。

from langchain_openai import ChatOpenAIfrom langchain.agents import create_agentfrom langchain.agents.middleware import wrap_model_call, ModelRequest, ModelResponsebasic_model = ChatOpenAI(model="gpt-4o-mini")advanced_model = ChatOpenAI(model="gpt-4o")@wrap_model_calldefdynamic_model_selection(request: ModelRequest, handler) -> ModelResponse:"""Choose model based on conversation complexity."""    message_count = len(request.state["messages"])if message_count > 10:# Use an advanced model for longer conversations        model = advanced_modelelse:        model = basic_model    request.model = modelreturn handler(request)agent = create_agent(    model=basic_model,  # Default model    tools=tools,    middleware=[dynamic_model_selection])

工具(Tool)

工具是智能体调用以执行操作的组件。

创建工具可以采用@tool装饰器,下面是一个基本示例:

from langchain.tools import tool@tooldefsearch_database(query: str, limit: int = 10) -> str:returnf"Found {limit} results for '{query}'"

该装饰器可以进一步自定义名称和描述,下面的示例自定义了一个calculator工具,如果不定义,工具名称默认就是函数名称。

@tool("calculator", description="Performs arithmetic calculations. Use this for any math problems.")defcalc(expression: str) -> str:returnstr(eval(expression))

定义完工具后,可以在创建智能体时,通过tools参数进行指定工具,传入是一个列表,可以指定多个工具。

from langchain.tools import toolfrom langchain.agents import create_agent@tooldefsearch(query: str) -> str:returnf"Results for: {query}"agent = create_agent(model, tools=[search])

系统提示(System prompt)

系统提示是指创建Agent时,指定Agent处理任务的具体方式。

在创建Agent时,可以通过system_prompt参数进行指定。

from langchain.agents import create_agentagent = create_agent(    model,    tools,    system_prompt="You are a helpful assistant. Be concise and accurate.")

对于复杂的系统,可以进一步通过@dynamic_prompt创建中间件的方式来进行设定,这里不作详细描述。

消息(Message)

消息是模型的基本上下文单元。它们代表模型的输入和输出,携带与 LLM 交互时表示对话状态所需的内容和元数据。

在 LangChain 中,包含四种类型消息:

  • 系统消息:告诉模型如何运行,并为交互提供上下文。
  • 人类消息:代表用户输入以及与模型的交互
  • AI消息:模型生成的响应,包括文本内容、工具调用和元数据
  • 工具消息:表示工具调用的输出

通过不同的消息定义,模型在交互时,可以辨别不同的消息来源。

短期记忆(Short-term memory)

短期记忆可以让应用程序记住单个线程或对话中的先前交互。

在创建agent时,可以指定checkpointer为InMemorySaver,用于保存保存对话历史记录,该信息临时存储在内存中,不持久。

from langchain.agents import create_agentfrom langgraph.checkpoint.memory import InMemorySaver  agent = create_agent("openai:gpt-5",    [get_user_info],    checkpointer=InMemorySaver(),  )

如果需要将记忆持久化,可以采用PostgresSaver,将记录存储到postgresql里面。

from langchain.agents import create_agentfrom langgraph.checkpoint.postgres import PostgresSaver  DB_URI = "postgresql://postgres:postgres@localhost:5442/postgres?sslmode=disable"with PostgresSaver.from_conn_string(DB_URI) as checkpointer:    checkpointer.setup() # auto create tables in PostgresSql    agent = create_agent("openai:gpt-5",        [get_user_info],        checkpointer=checkpointer,      )

除此之外,langchain还有一些接口,可以实现对记忆的修剪、删除和总结,以防超出模型的上下文窗口。

流式输出(Streaming)

流式输出逐步显示输出内容,以提升交互体验。

在langchain中,可通过以下方式获取流式响应信息:

from langchain.agents import create_agentagent = create_agent(    model="openai:gpt-5-nano")for chunk in agent.stream(      {"messages": [{"role": "user", "content": "What is the weather in SF?"}]},    stream_mode="updates",):for step, data in chunk.items():print(f"step: {step}")print(f"content: {data['messages'][-1].content_blocks}")

中间件(Middleware)

中间件提供了一种更严格地控制代理内部运行方式的方法,通过它能更好地控制Agent执行的内部逻辑。

在下图中,在agent/model/tool执行前后都可以插入中间件,以实现额外处理。

中间件有基于装饰器和基于类的两种模式。

基于装饰器的模式主要有以下分类:

装饰器类型触发时机 / 作用说明
@before_agent节点型Agent 开始执行前(每次调用一次)做初始化/准备工作,类似“启动钩子”
@before_model节点型每次模型推理前触发可动态修改 prompt 或输入
@after_model节点型每次模型输出后触发日志分析、结果处理、缓存
@after_agent节点型Agent 执行结束后触发(每次调用一次)清理、总结、资源释放
@wrap_model_call包裹型拦截每次模型调用可以修改输入/输出、跳过模型执行
@wrap_tool_call包裹型拦截每次工具调用可实现权限控制/限流/日志/Mock 工具
@dynamic_prompt便捷型动态生成 System Prompt相当于简化版 @wrap_model_call,专用于 prompt 注入

基于类的模式关键词差不多,只是调用方式略有区别。

langchain内置了一些常用中间件:

  • 总结(Summarization):当接近Token限制时自动总结对话历史。
  • 人机交互(HumanInTheLoop):在工具调用执行之前,暂停代理执行,以便人工批准、编辑或拒绝。
  • 人类提示缓存(AnthropicPromptCaching):使用 Anthropic 模型缓存重复的提示前缀,从而降低成本。
  • 模型调用限制(ModelCallLimit):限制模型调用次数,以防止无限循环或过高的成本。
  • 工具调用限制(ToolCallLimit):限制工具调用次数,只能调用特定工具或所有工具。
  • 模型回退(ModelFallback):当主模型失效时,自动回退到备用模型。
  • PII 检测(PII):检测和处理对话中的个人身份信息。
  • 规划(TodoList):为复杂的多步骤任务添加待办事项列表管理功能。
  • LLM工具选择器(LLMToolSelector):使用 LLM 在调用主模型之前智能地选择相关工具。
  • 工具重试(ToolRetry):使用可配置的指数退避算法自动重试失败的工具调用。
  • LLM 工具模拟器(LLMToolEmulator):使用 LLM 模拟工具执行以进行测试,用 AI 生成的响应替换实际的工具调用。
  • 上下文编辑(ContextEditing):通过精简、总结或清除工具使用情况来管理对话上下文。

结构化输出(Structured output)

结构化输出是指让Agent以特定格式返回数据。

langchain支持以下四种结构化输出模式:

  • Pydantic Model:带有字段验证的子类
  • 数据类:带有类型注解的 Python 数据类
  • 字典类:类型化字典类
  • JSON:包含 JSON Schema 规范的字典

以json格式化输出为例,可以通过response_format指定预定义的json格式:

from langchain.agents import create_agentcontact_info_schema = {"type": "object","description": "Contact information for a person.","properties": {"name": {"type": "string", "description": "The name of the person"},"email": {"type": "string", "description": "The email address of the person"},"phone": {"type": "string", "description": "The phone number of the person"}    },"required": ["name", "email", "phone"]}agent = create_agent(    model="openai:gpt-5",    tools=tools,    response_format=contact_info_schema  # Auto-selects ProviderStrategy)result = agent.invoke({"messages": [{"role": "user", "content": "Extract contact info from: John Doe, john@example.com, (555) 123-4567"}]})print(result["structured_response"])

拓展

本文总结了 LangChain 的基本使用方法和常用核心组件,下一篇文章将进一步深入,研究 MCP、长期记忆、多智能体等高阶使用方法。

想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?别再浪费时间啦!2025 年 AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享!

👇👇扫码免费领取全部内容👇👇

​

一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势

想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI:

1. 100+本大模型方向电子书

在这里插入图片描述

2. 26 份行业研究报告:覆盖多领域实践与趋势

报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:

  • 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
  • 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
  • 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
  • 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。

3. 600+套技术大会 PPT:听行业大咖讲实战

PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:

在这里插入图片描述

  • 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
  • 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
  • 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
  • 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。

二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走

想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!

1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位

面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析:

2. 102 道 AI 大模型真题:直击大模型核心考点

针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:

3. 97 道 LLMs 真题:聚焦大型语言模型高频问题

专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:


三、路线必明: AI 大模型学习路线图,1 张图理清核心内容

刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!

在这里插入图片描述

路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。

img

L1阶段:启航篇丨极速破界AI新时代

L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

img

L2阶段:攻坚篇丨RAG开发实战工坊

L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

img

L3阶段:跃迁篇丨Agent智能体架构设计

L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

img

L4阶段:精进篇丨模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

img

L5阶段:专题集丨特训篇 【录播课】

img
四、资料领取:全套内容免费抱走,学 AI 不用再找第二份

不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:

👇👇扫码免费领取全部内容👇👇

​

2025 年想抓住 AI 大模型的风口?别犹豫,这份免费资料就是你的 “起跑线”!

LangChain --- 如何连接硅基流动(SiliconFlow) 最近刚刚着手学习LangChain,学习了部分原理,参考上一篇文章在刚刚准备上手实践就遇到了问题。由于国内限制,在我的本地调用Google和OpenAI的API一直不通。于是想起了硅基流动平台上的诸多模型,但中途一直提示我的token无效,无奈只能参考其他人的博客,终于找到了对应的方法。 阅读详情

相关推荐

深入浅出LangChain AI Agent智能体开发教程(九)—LangChain从0到1搭建知识库

本期分享我们通过Streamlit前端界面,结合LangChain框架retriever工具与DashScope向量模型服务、DeepSeek大模型服务,从0到1实现了轻量化的RAG知识库系统。

weixin_42782643的博客 1326

一文详解LangChain 重磅发布 AI 智能体中间件,彻底告别 “失控”,收藏这一篇就够了!!

本文详解了LangChain 1.0新推出的智能体中间件,它通过全流程干预、灵活组合和开箱即用三大能力,解决了传统AI智能体框架在生产中难以灵活定制、上下文控制难等问题。开发者无需修改底层代码,即可在模型调用各阶段插入自定义规则,实现对话总结、人机协同等高级功能,让AI智能体从Demo成功走向生产环境。

Gaga246的博客 1233

用LangServe快速部署你的LangChain应用:从零开始指南

LangServe 提供了一种高效、便捷的方式来部署 LangChain 应用,并集成到现有的开发流程中。通过本文的介绍和示例,您应该能够快速上手并应用于实际项目。

cgsayuclv的博客 762

LangChain v1.0:从零开始构建企业级AI智能体全攻略!

LangChain v1.0完成了从"玩具框架"到生产级解决方案的蜕变,通过create_agent接口、content_blocks标准化和简化命名空间三大核心改进,显著提升了开发效率(40%)、系统稳定性(65%)并降低了模型切换成本(80%)。文章详细介绍了这些改进如何应用于智能客服、数据分析和RAG系统等场景,并提供了LCEL优化、结构化输出和自定义中间件等进阶技巧,为开发者构建企业级Agent提供了全面指南。

2301_80239908的博客 3145

LangChain v0.1.0:大模型应用技术革新的里程碑

LangChain已经存在了一年多一点,随着LangChain成长为构建LLM应用程序的默认框架,LangChain已经发生了很大的变化。正如LangChain一个月前预览的那样,LangChain最近决定对LangChain架构进行重大更改,以便更好地组织项目并加强基础。分离出langchain-core分离出langchain-community 和 standalone partner packageslangchain-core包含主要的抽象、接口和核心功能。

大模型与Agent智能体 1283

【屠龙之术】SAP 欧洲公司 高级合规性报表 FEC

所谓FEC ,其实是法国税务局要求法国的公司,每年要向税务局进行提交的税务报告,这个报告有特殊的格式,进行加密,法国公司要在收到税务局通知以后,及时进行报送,如果不报送,或者报送不合格文件,将面临5000欧的罚款。-----------------------------------------------进入正文----------------------------------------------------------------------有专门的T-code,PPT我就不贴了,我直接截图。

竹大的博客 1960

从零开始学习LangChain1.0:大模型应用开发者的必备技能!

本文详细介绍了LangChain 1.0版本的更新和核心组件,包括将Chain & Agent整合为基于LangGraph的Agent抽象,支持流程图化、并行和条件判断,以及标准化的结构化消息格式。文章讲解了快速上手方法、核心组件(智能体、模型、工具、系统提示、消息、短期记忆等)的使用,并提供了在国内环境下使用DeepSeek-V3.2等模型的实践示例,帮助开发者掌握大模型应用开发。

WANGJUNAIJIAO的博客 1369

Starlink第三代终端和第二代终端的差异性有哪些?

starlink第三代终端和第二代终端的额差异

chen2jiang3的博客 2925

收藏必看:从零开始掌握LangChain 1.0:LangChain与LangGraph选择指南及智能体开发实战

LangChain 1.0发布,明确了与LangGraph的适用场景:快速构建智能体用LangChain;需要确定性工作流、高度自定义的场景用LangGraph。LangChain智能体构建于LangGraph之上,提供持久执行、流式传输等功能。文章介绍了使用create_agent方法创建智能体,包括理解上下文、使用多种工具、提供结构化回复等功能。作者提供了源码和教程链接,帮助开发者快速上手。

weixin_72959097的博客 769

飞腾D2000开发板实战:手把手教你为UEFI/EDK2驱动SD3077 RTC时钟芯片

本文详细介绍了在飞腾D2000开发板上为UEFI/EDK2环境驱动SD3077 RTC时钟芯片的全流程开发指南。从硬件连接到软件适配,包括引脚复用配置、电源管理优化以及UEFI驱动的深度定制,帮助开发者解决嵌入式系统中的时间同步问题,确保RTC芯片的稳定性和准确性。

weixin_30892037的博客 423

Labelme安装教程(附Anaconda安装教程)

本文详细介绍了如何安装Anaconda和Labelme,还提供了常见问题的解决建议。

HanYan_ing的博客 1万+

AI从零开始系列教程 - LangChain学习与实战(1) 基础知识

LangChain 是一个用于开发大语言模型(LLM)应用的框架,它的核心价值在于简化复杂语言模型应用的开发流程,并提供标准化的工具链。

2301_81940605的博客 764

DDSP(Differentiable Digital Signal Processing) 开篇

文章目录DDSP可以用来做什么?下一步工作 工作中接触到了DDSP声码器,但非科班出声的我对这块知识非常陌生,甚至带有一些畏惧的心理,但是为了工作为了进步,必须硬下头皮去啃,相信只要耐心地坚持,没什么能难到我。于是从今天开始,就用这个博客专栏来记录我的学习历程,希望也能帮助到你~ DDSP对应的论文是:DDSP: Differentiable Digital Signal Processing 先翻译一篇来自DDSP论文作者的对DDSP的介绍的文章。 今天,我们很高兴地介绍可微数字信号处理(DDSP)库。

YeeKo的博客 9246

【大模型学习】LangChain1.0多模态RAG知识库开发全流程!

本文介绍了基于LangChain 1.0开发多模态RAG系统的核心架构,采用前后端分离架构,构建支持文本、图像、音频和PDF处理的四大功能模块。文章详细讲解了智能问答基础模块的开发,包括环境配置、多模态模型初始化、数据结构定义、多模态消息构建、对话历史管理和流式响应生成等内容,并使用Postman完成了接口测试验证。本实战项目为后续扩展更复杂的多模态应用奠定了坚实基础。

libaiup的博客 1289

rk3588 rkaiq_3A_server 无法解析json文件记录

rk3588 rkaiq_3A_server 无法解析json文件记录

neardi_dev的博客 1万+

AgentScope Java 2.0 项目实战:从零构建企业级自主Coding Agent

本文基于 AgentScope Java 框架,完整拆解两个生产级 AI Agent 项目的从零开发全过程。其一是企业级自主编码机器人(agentscope-codingagent),支持 Issue→PR 自动实现、PR Code Review、Docker 沙箱隔离执行与多通道接入;其二是个人 AI 助手管理平台(agentscope-paw),采用 Spring Boot + React 全栈架构,支持多 Agent、技能市场与多 IM 通道。

program哲学 839

LangChain 入门学习

LangChain是一个开源框架,帮助开发者构建基于大语言模型(LLMs)的应用程序。它提供三大核心功能:1)连接外部数据和系统;2)组合多个LLM操作;3)实现自主决策代理。主要组件包括模型调用接口、提示词模板、功能链和代理系统。安装简单,通过pip即可完成,推荐配合LangSmith平台进行调试。典型应用场景包括文档问答系统(RAG)、自动任务执行等。框架优势在于统一不同模型的调用方式,简化开发流程,并支持连接私有数据源。通过链式组合基本组件,开发者可以快速构建复杂的AI应用。

TTKunn的博客 1556

第14.8章 高翔博士最新开源框架Lightning-LM源码解读(八):位姿平滑器PoseSmoother深度剖析,从原理到代码实现

本文深度解析了高翔博士开源框架Lightning-LM中的位姿平滑器PoseSmoother模块。该模块通过设置平滑因子,在保证位姿准确性的同时减少突变,使位姿变化更平稳。文章详细讲解了模块功能、数据流程和核心代码实现,包括构造函数、拷贝构造函数以及关键的PushDRPose和PushPose函数。重点分析了位姿平滑算法原理,涉及运动有效性校验、位姿队列维护和平滑因子调节等核心机制。此外还介绍了相关C++语法(如显式构造函数、默认拷贝构造)和优化方向。本解析为SLAM学习者提供了位姿平滑处理的实用实现范例。

行知SLAM 601

LangChain1.0教程:从零开始学RAG,构建你的第一个大模型问答机器人

本文详细介绍如何使用RAG技术构建问答聊天机器人,涵盖索引(加载、切分、存储)和检索与生成两大核心环节,分别讲解RAG Agent和RAG Chain两种实现方式。通过LangChain框架,将非结构化文本数据转化为可检索的向量数据库,结合LLM实现智能问答,适合零基础学习者快速上手大模型应用开发。

yihanss的博客 1083

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

从零开始构建智能SQL问答系统:LangChain 1.0 NL2SQL Agent实现指南!

文章介绍了NL2SQL技术如何通过自然语言查询数据库,降低数据分析门槛。详细对比了Vanna、DB-GPT等主流开源框架,并提供了基于LangChain 1.0 ReAct架构的完整实现方案。该方案结合FastAPI和React,构建了支持CSV/Excel文件上传、自然语言查询、自动生成分析报告和可视化图表的智能SQL问答系统,使非技术用户也能高效获取数据洞察。

libaiup的博客 1467

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

导论——从0到1学习agent

从0到1学习Agent开发

qq_53460854的博客 2117

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

LangChain 1.0 vs 传统开发:效率提升10倍的秘密

对于想尝试LangChain的朋友,我的建议是:不要被初期学习成本吓退,一旦掌握基本模式,开发效率的提升是惊人的。特别是他们的Jupyter Notebook环境预装了常用AI库,省去了繁琐的环境配置,让我能更专注于算法和业务逻辑的优化。最近在做一个文本摘要的小项目时,我尝试了两种完全不同的开发方式:传统手工编码和使用LangChain 1.0框架。现在可以快速尝试不同模型组合,比如先用GPT-4生成大纲,再用Claude细化摘要,这种实验在以前需要几天的工作量现在半小时就能验证。

CrystalwaveEagle34的博客 760

从零开始学 langchain 之搭建最小的 RAG 系统(附教程)

RAG 可以说是 23 年以来到现在,最为火热的大模型应用技术了,很多人都有了很多经典的研究。而对于新人来说,有些代码十分复杂,导致只看表象并不理解其原理。今天,就利用 langchain 和大家一起搭建一个最简单的 RAG 系统,一起来学习一下吧。

2401_82469710的博客 1874

从零开始:LangChain 入门指南

LangChain 作为一个新兴的开源 LLM 开发框架,它的设计理念和一些实现方法都有值得我们借鉴的地方。当然一个开源项目必然有自己的优点的同时也会存在不少的缺点。我们在实际使用的时候,应该按照自己的需求和实际情况去选择,切记,不要简单的因为网上的评论而做出选择。毕竟,好不好用,只有你自己才清楚。

2401_84204207的博客 2807

从零开始学 langchain 之搭建最小的 RAG 系统

RAG 可以说是 23 年以来到现在,最为火热的大模型应用技术了,很多人都有了很多经典的研究。而对于新人来说,有些代码十分复杂,导致只看表象并不理解其原理。今天,就利用 langchain 和大家一起搭建一个最简单的 RAG 系统,一起来学习一下吧。

AAI666666的博客 2869
上一篇: 应该如何开始学习 Langchain/Langgraph?
下一篇: 7天从入门到精通​​:Prompt Engineering超速通指南
AI_小站
博客等级 码龄3年 6255粉丝 1152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值