LangChain

LangChain 详解 什么是 LangChain LangChain 是一个用于构建基于大语言模型(LLM)应用的开源框架。它提供了一套标准化的组件和工具,简化了 AI Agent、聊天机器人、问答系统等应用的开发过程。 核心理念:通过"链(Chain)“将多个组件连接起来,构建复杂的 LLM 应用。 官方仓库: Python:langchain-ai/langchain JavaScript/TypeScript:langchain-ai/langchainjs 核心组件 1. Models(模型) 支持多种 LLM 提供商: from langchain.llms import OpenAI, Anthropic, HuggingFaceHub from langchain.chat_models import ChatOpenAI, ChatAnthropic # OpenAI llm = OpenAI(temperature=0.7) # Claude chat = ChatAnthropic(model="claude-3-sonnet-20240229") # 本地模型 from langchain.llms import Ollama local_llm = Ollama(model="llama2") 2. Prompts(提示模板) 管理和复用提示词: from langchain.prompts import PromptTemplate, ChatPromptTemplate # 简单模板 prompt = PromptTemplate( input_variables=["product"], template="给{product}写一个广告语" ) # 聊天模板 chat_prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个{role}"), ("human", "{user_input}") ]) # 使用 formatted = prompt.format(product="智能手表") result = llm(formatted) 3. Chains(链) 将多个组件串联: from langchain.chains import LLMChain, SimpleSequentialChain # 单个链 chain = LLMChain(llm=llm, prompt=prompt) result = chain.run(product="智能手表") # 顺序链 chain1 = LLMChain(llm=llm, prompt=prompt1) # 生成产品描述 chain2 = LLMChain(llm=llm, prompt=prompt2) # 生成广告语 overall_chain = SimpleSequentialChain( chains=[chain1, chain2], verbose=True ) result = overall_chain.run("智能手表") 4. Agents(代理) 动态决策和工具调用: ...

Created 26266-04-26 · Updated 26266-07-26 · 5 min · 901 words · -

LangSmith - LLM 应用的可观测性平台

什么是 LangSmith LangSmith 是 LangChain 团队推出的 LLM 应用可观测性与评估平台,用于追踪(trace)、调试、测试和监控基于 LLM 的应用。它不要求应用一定使用 LangChain 或 LangGraph 构建——任何调用 LLM 的代码都可以接入 LangSmith,但与 LangChain / LangGraph 的集成是开箱即用的。 核心定位:LLM 应用的"生产环境可观测性 + 离线评估"工具,解决 LLM 应用调试困难、行为不透明、质量难以量化的问题。 官方仓库 / 产品:langchain-ai/langsmith-sdk(SDK 开源,平台本身为托管 SaaS,也提供自托管方案)。 为什么需要 LangSmith 传统软件的日志和监控体系(APM、ELK 等)不足以覆盖 LLM 应用的调试需求: 多步骤链路不透明:一次 Agent 调用可能包含多次 LLM 请求、工具调用、检索操作,普通日志难以还原完整调用树 Prompt 调试依赖人工:Prompt 的微小改动可能显著影响输出质量,缺乏系统化的对比手段 输出质量难以量化:LLM 输出是非确定性的自然语言,传统的断言测试不适用 成本和延迟不可见:Token 消耗、模型延迟分散在各次调用中,难以聚合分析 LangSmith 针对这些痛点提供了追踪、数据集管理、评估和监控能力。 核心功能 1. Tracing(追踪) 记录一次请求内所有 LLM 调用、工具调用、检索操作的完整调用树,包括输入、输出、耗时、Token 用量。 import os os.environ["LANGCHAIN_TRACING_V2"] = "true" os.environ["LANGCHAIN_API_KEY"] = "your-api-key" os.environ["LANGCHAIN_PROJECT"] = "my-project" # LangChain / LangGraph applications are traced automatically # once the environment variables above are set from langchain_openai import ChatOpenAI llm = ChatOpenAI(model="gpt-4") result = llm.invoke("Explain what LangSmith does") 对于不使用 LangChain 的代码,可以用 @traceable 装饰器手动接入: ...

Created 26266-07-26 · Updated 26266-07-26 · 2 min · 345 words · -

Output Constraint: LLM 输出约束

Output Constraint(输出约束) Output Constraint 是通过提示词、格式规范或模型能力,对 LLM 的输出内容、结构、长度、风格等进行约束,使输出结果可预期、可解析、可被下游系统直接消费的一类技术。 在 AI Agent 场景中,输出约束尤为重要——Agent 的输出往往需要被代码解析、传递给下一个工具,或渲染到 UI,任何格式偏差都可能导致流程中断。 约束维度 维度 说明 示例 格式约束 要求输出为特定结构 JSON、XML、Markdown 表格、YAML 内容约束 限定输出范围或值域 只能从给定选项中选择、不得包含某类内容 长度约束 限制输出的字数或条数 “不超过 100 字”、“恰好输出 3 条建议” 风格约束 限定语气、人称、语言 正式/口语、中文/英文、第一人称 Schema 约束 强制输出符合 JSON Schema 字段类型、必填项、枚举值 方式一:提示词约束(Prompt-based) 最简单直接的方式,在 System Prompt 或 User Prompt 中明确描述输出格式: system_prompt = """ 你是一个情感分析助手。 输出要求: - 只输出 JSON,不要有任何额外文字 - 格式如下: { "sentiment": "positive" | "negative" | "neutral", "confidence": 0.0 ~ 1.0, "reason": "简短理由(不超过 20 字)" } """ response = llm.call(system_prompt, user_input="这个产品真的太好用了!") # 输出:{"sentiment": "positive", "confidence": 0.95, "reason": "用户使用了强烈的赞美语气"} 优点:通用,任何模型都支持 缺点:无法 100% 保证格式,模型偶尔会"越界" ...

Created 26266-04-26 · Updated 23236-07-23 · 2 min · 316 words · -

LlamaIndex

LlamaIndex 详解 什么是 LlamaIndex LlamaIndex(原名 GPT Index)是一个专注于数据连接和检索的开源框架,主要用于构建 RAG(检索增强生成)应用。与 LangChain 相比,LlamaIndex 更专注于数据索引、检索和查询,是构建知识库和文档问答系统的首选工具。 核心定位:数据框架(Data Framework for LLM Applications) 官方仓库:run-llama/llama_index 设计哲学: LangChain:通用的 LLM 应用框架(Chain、Agent、Memory 等) LlamaIndex:专注于数据摄入、索引和检索 ⚠️ 名称说明:LlamaIndex vs Llama2 重要澄清:LlamaIndex 与 Meta 的 Llama2/Llama3 开源模型没有任何关系,它们是完全独立的项目: 项目 类型 开发者 功能 LlamaIndex 开发框架 LlamaIndex 团队(原 run-llama) 数据索引和检索框架 Llama2/Llama3 大语言模型 Meta(Facebook) 开源 LLM 模型 为什么叫 “Llama”? LlamaIndex 的命名来自"Large Language Model Applications"的缩写 与 Meta 的 Llama 模型纯属巧合(命名冲突) 实际关系: LlamaIndex 框架可以使用 Llama2/Llama3 作为底层 LLM 但 LlamaIndex 也支持 OpenAI、Claude、Gemini 等任何 LLM 两者是"框架"与"模型"的关系,而非从属关系 示例: ...

Created 26266-04-26 · Updated 23236-07-23 · 5 min · 1040 words · -

Function Calling: LLM 函数调用

Function Calling(函数调用)详解 Function Calling 是现代大语言模型(如 GPT-4、Claude)提供的一项高级能力,允许 LLM 自动识别用户意图、提取参数,并生成标准化的函数调用请求。它是 AI Agent 实现工具调用的最先进方式。 什么是 Function Calling Function Calling 是 LLM 的一种特殊输出模式:不是直接返回文本,而是返回一个结构化的函数调用指令,包含: 要调用的函数名称 函数所需的参数(JSON 格式) 核心流程: 用户输入 → LLM 分析 → 返回函数调用指令 → 执行函数 → 返回结果 → LLM 生成自然语言响应 Function Calling vs 传统 Slot Filling 传统 Slot Filling 的局限 需要多步处理 步骤1:意图识别(调用一次 LLM) 步骤2:参数提取(再调用一次 LLM 或使用 NER) 步骤3:手动组装函数调用 容易出错 意图识别可能不准确 参数提取可能遗漏或错误 需要额外的数据验证逻辑 开发成本高 需要编写意图识别逻辑 需要编写参数提取和验证代码 需要维护多个处理步骤 Function Calling 的优势 一步到位 用户输入 → LLM → 直接返回完整的函数调用(包含意图和参数) 内置验证 ...

Created 26266-04-26 · Updated 23236-07-23 · 3 min · 636 words · -

AI agent development

AI Agent 开发的本质 开发 AI Agent 的核心是将已验证的知识和流程固化成可执行的规则和指令。 具体来说: 知识固化 - 把专家经验、最佳实践、业务规则编码成 Agent 可以遵循的指令 流程自动化 - 将重复性的决策流程转化为确定性的执行步骤 质量保障 - 通过固化的规则确保每次执行的一致性,避免人为疏忽 迭代优化 - 每次发现新问题或更好的做法,就更新这些"固化的知识",Agent 的能力随之提升 本质上是把隐性知识显性化,把经验驱动变成规则驱动。 这也意味着 Agent 的质量上限取决于你固化进去的知识质量。垃圾进,垃圾出;好的经验进,稳定的高质量输出。 为什么需要固化知识 LLM 的知识覆盖面极广,解决同一个问题可能有多条路径,但其中只有少部分是最佳实践。具体输出什么内容,很大程度上取决于提示词的质量。 把已验证的解决方案固化到 Agent 里,能让 Agent 在特定领域有更稳定、更优质的表现——相当于给 LLM 划定了一条"黄金路径",避免它在众多可能性中随机游走。 常用技术栈 编程语言 Python(主流,生态丰富) JavaScript/TypeScript(Web/Node.js Agent) Go、Java(高性能/企业级) 大语言模型与 API OpenAI GPT-4/3.5、Claude、Llama Hugging Face Transformers LangChain、LlamaIndex(Agent 框架) Web 框架与服务 FastAPI、Flask(Python) Express.js(Node.js) Django 数据存储 Redis、MongoDB、PostgreSQL、SQLite 向量数据库:Milvus、Pinecone、Weaviate 消息队列与异步任务 Celery、RabbitMQ、Kafka 容器与部署 Docker、Kubernetes 云服务:AWS、Azure、GCP 前端交互 React、Vue.js WebSocket、RESTful API 其他 Prompt 工程、工具插件系统 OAuth2、JWT(安全认证) 日志与监控:Prometheus、Grafana Python 调用模型方式 AI Agent 用 Python 开发时,可以调用本地模型或云端模型: ...

Created 26266-04-26 · Updated 23236-07-23 · 3 min · 554 words · -

AI Agent

AI Agent AI Agent(人工智能代理)是一个能够感知环境、自主决策并采取行动以完成目标的软件系统。 与普通程序不同,AI Agent 的核心特征是自主性:它不只是被动地响应单次输入,而是能够: 制定多步骤计划 调用外部工具(搜索、代码执行、API 调用等) 根据执行结果动态调整策略 持续循环直到目标完成 AI Agent 的定义 从学术角度,Agent 的经典定义来自 Russell & Norvig(《人工智能:一种现代方法》): Agent 是任何能够通过传感器感知环境、并通过执行器对环境采取行动的事物。 在 LLM 时代,AI Agent 的定义更具体: AI Agent 是以大语言模型为核心推理引擎,能够自主规划任务、调用工具、与外部系统交互,并通过反馈循环完成复杂目标的自治系统。 Agent 的四个核心要素 要素 说明 感知(Perception) 接收输入:多模态用户指令、工具返回结果、系统状态、历史记忆 规划(Planning) 将目标分解为可执行的子任务序列 行动(Action) 调用工具、执行代码、调用 API、操作文件等 记忆(Memory) 短期记忆(上下文窗口)+ 长期记忆(向量数据库等) 感知的来源 感知不只是用户输入那一句话,Agent 每次推理前收到的完整上下文都属于"感知": 来源 说明 多模态输入 用户的文本指令(最常见)、图片、音频、视频等 工具返回结果 搜索结果、API 响应、代码执行输出、数据库查询结果 系统状态 文件内容、环境变量、当前任务进度 历史记忆 短期记忆(上下文窗口中的对话历史)+ 长期记忆(从向量数据库检索) 这四类来源最终都会被拼装进 LLM 的上下文窗口,LLM 基于这个完整上下文做出下一步决策。因此,感知本质上是构建 LLM 输入上下文的过程。 上下文窗口:感知的硬性约束 能放入上下文的信息量取决于模型的上下文窗口大小(以 token 计): ...

Created 27276-04-27 · Updated 27276-04-27 · 4 min · 801 words · -

CrewAI - 多智能体协作框架

什么是 CrewAI CrewAI 是一个开源的 Python 框架,专门用于构建和管理多智能体(Multi-Agent)系统。它允许开发者创建一个由多个 AI 智能体组成的"团队"(Crew),这些智能体可以协同工作,共同完成复杂的任务。 核心概念 Agent(智能体) Agent 是 CrewAI 中的基本执行单元,代表一个具有特定角色和能力的 AI 助手。每个 Agent 具有: Role(角色):定义 Agent 的身份和职责 Goal(目标):Agent 要达成的目标 Backstory(背景故事):为 Agent 提供上下文和个性 Tools(工具):Agent 可以使用的工具集合 from crewai import Agent researcher = Agent( role='研究员', goal='收集和分析相关信息', backstory='你是一位经验丰富的研究专家,擅长从各种来源收集准确信息', tools=[search_tool, scrape_tool], verbose=True ) Task(任务) Task 定义了需要完成的具体工作,包括: Description(描述):任务的详细说明 Agent:负责执行该任务的智能体 Expected Output(期望输出):任务完成后的预期结果 from crewai import Task research_task = Task( description='研究 AI 领域的最新发展趋势', agent=researcher, expected_output='一份包含最新 AI 趋势的详细报告' ) Crew(团队) Crew 是多个 Agent 和 Task 的组合,负责协调整个工作流程: from crewai import Crew, Process crew = Crew( agents=[researcher, writer, reviewer], tasks=[research_task, write_task, review_task], process=Process.sequential # 顺序执行 ) result = crew.kickoff() 执行流程 CrewAI 支持两种执行流程: ...

Created 18186-01-18 · Updated 18186-01-18 · 3 min · 524 words · -

Ollama - 本地大语言模型运行工具

Ollama 简介 Ollama 是一个开源的本地大语言模型运行工具,可以让你在本地轻松运行 Llama 2、Mistral、Qwen 等多种开源大语言模型。 安装 Ollama Linux 安装 # 使用官方安装脚本 curl -fsSL https://ollama.com/install.sh | sh 安装记录 (2025-11-14): 安装版本:v0.12.11 安装位置:/usr/local/bin/ollama 服务配置:已创建 systemd 服务 ollama.service 默认监听:127.0.0.1:11434 GPU 支持:检测到 AMD GPU,安装了 ROCm 支持 用户组:创建了 ollama 用户,并加入 render 和 video 组 自动启动:服务已启用并自动运行 手动安装 # 下载二进制文件 curl -L https://ollama.com/download/ollama-linux-amd64 -o ollama chmod +x ollama sudo mv ollama /usr/local/bin/ 验证安装 # 检查版本 ollama --version # 输出: ollama version is 0.12.11 # 检查服务状态 systemctl status ollama # 测试 API 是否可用 curl http://127.0.0.1:11434/api/version # 输出: {"version":"0.12.11"} 基本使用 启动 Ollama 服务 # 启动服务 ollama serve 拉取模型 # 拉取 Llama 2 模型(7B 参数版本) ollama pull llama2 # 拉取 Mistral 模型 ollama pull mistral # 拉取 Qwen 模型 ollama pull qwen # 拉取 Phi 模型(推荐入门) ollama pull phi 本地已安装模型 (2025-11-14): ...

Created 14146-11-14 · Updated 14146-11-14 · 2 min · 416 words · -