Skip to content
Back to skills

Langchain Architecture

ASecurity

当用 LangChain 构建带工具、记忆、检索的 LLM 应用与 Agent 时使用;做架构选型与可运行骨架(Agent/Chain/Memory/RAG/回调)并给生产清单;不适用于非 LangChain 的纯 Prompt 调用或与该框架无关的任务;触发词:LangChain、Agent、Chain、记忆、RAG、检索、回调

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
ai-agentspythonreactapidatabase

Works with

  • cursor
  • cli
  • api

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add findscripter/everything-skills --skill langchain-architecture --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Langchain Architecture?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Langchain Architecture
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/findscripter-langchain-architecture/badge)](https://www.skillsdirectory.com/skills/findscripter-langchain-architecture)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: langchain-architecture
title: LangChain 架构设计
description: 当用 LangChain 构建带工具、记忆、检索的 LLM 应用与 Agent 时使用;做架构选型与可运行骨架(Agent/Chain/Memory/RAG/回调)并给生产清单;不适用于非 LangChain 的纯 Prompt 调用或与该框架无关的任务;触发词:LangChain、Agent、Chain、记忆、RAG、检索、回调
domain: 智能/agents
triggers: [LangChain, Agent 工具调用, Chain 链式编排, 对话记忆 Memory, RAG 检索问答, 向量库检索, 回调监控 callbacks, 多步 LLM 工作流]
tags: [智能体, agents, langchain, rag, 记忆, 工具调用, llm 工程]
level: 进阶
status: stable
agents: [claude-code, codex, cursor, gemini-cli]
tools: [Python, LangChain, OpenAI, Chroma, pytest]
requires: []
related: [langgraph-agent-framework, pydantic-ai-agents, vercel-ai-sdk, llm-app-production-patterns]
combines_with: [rag-implementation-workflow, agent-memory-architecture]
license: MIT
source: sickn33/agentic-awesome-skills
source_license: MIT
---
## 何时使用

适用:

- 构建能自主选择工具的 Agent(ReAct、OpenAI Functions、Structured Chat、Conversational、Self-Ask)。
- 编排多步 LLM 工作流(LLMChain / SequentialChain / RouterChain / MapReduce)。
- 管理跨轮对话的上下文与状态(多种 Memory)。
- 把 LLM 接入外部数据/API,做 RAG 文档检索问答。
- 沉淀模块化、可复用的 LLM 应用组件,并推向生产。

不该用(负边界):

- 任务与 LangChain 框架无关,或只是单次纯 Prompt 调用,无需链/Agent/记忆。
- 需要的是其他领域/工具栈(直接用厂商 SDK、向量库原生 API 等)。
- 缺少必要输入、权限、安全边界或成功标准时,先停下来澄清,不要硬套。

## 步骤

1. 明确目标、约束与必需输入:是问答(RAG)、自主 Agent、还是固定多步流水线?据此选骨架。
2. 选 LLM 与温度(确定性任务用 `temperature=0`)。
3. 选 Memory 类型(见下方对照),按对话长度与是否需实体/语义检索决定。
4. 定义工具:给每个 `@tool` 写清晰 docstring,工具描述质量直接决定 Agent 选对工具的概率。
5. 组装 Agent / Chain,`verbose=True` 便于调试。
6. 挂回调做日志、token 统计、延迟与错误监控。
7. 写测试(工具选择、记忆持久化),按生产清单逐项验证后上线。

## 指令

- 澄清目标、约束与必需输入,再动手。
- 套用对应最佳实践并验证产物(不要把输出当作免测试的成品)。
- 给出可执行步骤与验证方法。
- 缺输入/权限/安全边界/成功标准时停下提问。

Memory 选型对照:

- 短对话(<10 轮):`ConversationBufferMemory`(存全部)。
- 长对话:`ConversationSummaryMemory(llm=llm)`(摘要旧消息)。
- 滑动窗口:`ConversationBufferWindowMemory(k=5)`(留最近 N 条)。
- 实体跟踪:`ConversationEntityMemory(llm=llm)`。
- 语义检索历史:`VectorStoreRetrieverMemory(retriever=retriever)`。

## 示例

快速起步(带工具+记忆的 Conversational Agent):

```python
from langchain.agents import AgentType, initialize_agent, load_tools
from langchain.llms import OpenAI
from langchain.memory import ConversationBufferMemory

llm = OpenAI(temperature=0)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
memory = ConversationBufferMemory(memory_key="chat_history")

agent = initialize_agent(
    tools, llm,
    agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
    memory=memory, verbose=True,
)
result = agent.run("What's the weather in SF? Then calculate 25 * 4")
```

RAG 检索问答骨架:

```python
from langchain.chains import RetrievalQA
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings

documents = TextLoader('documents.txt').load()
texts = CharacterTextSplitter(chunk_size=1000, chunk_overlap=200).split_documents(documents)
vectorstore = Chroma.from_documents(texts, OpenAIEmbeddings())

qa_chain = RetrievalQA.from_chain_type(
    llm=llm, chain_type="stuff",
    retriever=vectorstore.as_retriever(),
    return_source_documents=True,
)
result = qa_chain({"query": "What is the main topic?"})
```

自定义工具 Agent(docstring 即工具说明):

```python
from langchain.agents import initialize_agent, AgentType
from langchain.tools import tool

@tool
def search_database(query: str) -> str:
    """Search internal database for information."""
    return f"Results for: {query}"

@tool
def send_email(recipient: str, content: str) -> str:
    """Send an email to specified recipient."""
    return f"Email sent to {recipient}"

agent = initialize_agent(
    [search_database, send_email], llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True,
)
```

多步 SequentialChain(抽取→分析→汇总,靠 output_key 串联):

```python
from langchain.chains import LLMChain, SequentialChain
from langchain.prompts import PromptTemplate

extract_chain = LLMChain(llm=llm, output_key="entities",
    prompt=PromptTemplate(input_variables=["text"],
        template="Extract key entities from: {text}\n\nEntities:"))
analyze_chain = LLMChain(llm=llm, output_key="analysis",
    prompt=PromptTemplate(input_variables=["entities"],
        template="Analyze these entities: {entities}\n\nAnalysis:"))
summary_chain = LLMChain(llm=llm, output_key="summary",
    prompt=PromptTemplate(input_variables=["entities", "analysis"],
        template="Summarize:\nEntities: {entities}\nAnalysis: {analysis}\n\nSummary:"))

overall_chain = SequentialChain(
    chains=[extract_chain, analyze_chain, summary_chain],
    input_variables=["text"],
    output_variables=["entities", "analysis", "summary"], verbose=True)
```

自定义回调(监控/调试):

```python
from langchain.callbacks.base import BaseCallbackHandler

class CustomCallbackHandler(BaseCallbackHandler):
    def on_llm_start(self, serialized, prompts, **kwargs): ...
    def on_llm_end(self, response, **kwargs): ...
    def on_llm_error(self, error, **kwargs): ...
    def on_agent_action(self, action, **kwargs): ...

agent.run("query", callbacks=[CustomCallbackHandler()])
```

测试要点(工具选择 + 记忆持久化):

```python
def test_memory_persistence():
    memory = ConversationBufferMemory()
    memory.save_context({"input": "Hi"}, {"output": "Hello!"})
    assert "Hi" in memory.load_memory_variables({})['history']
```

## 注意事项

常见坑:

1. 记忆溢出:未控制对话历史长度,及时切换 Summary/Window 记忆。
2. 工具选择错误:工具描述含糊会误导 Agent,docstring 要精准。
3. 超出上下文窗口:注意 token 上限,配合分块与摘要。
4. 缺错误处理:未捕获 Agent 失败,需加 try/except 与回退策略。
5. 检索低效:未优化向量库查询(chunk 大小/重叠、检索 top-k)。

性能优化:开启缓存 `langchain.llm_cache = InMemoryCache()`;批量文档用 `ThreadPoolExecutor` 并行切分;交互式场景用 `StreamingStdOutCallbackHandler` 流式输出。

生产清单(上线前逐项核对):错误处理、请求/响应日志、token 与成本监控、Agent 执行超时、限流、输入校验、边界用例测试、可观测性(回调)、回退策略、Prompt 与配置纳入版本控制。

提醒:仅在任务确实匹配本技能范围时使用;产物不能替代环境内的实测、验证与专家评审。

## 互见

源仓库附带更深资料可参考(如存在):agents(Agent 架构深潜)、memory(记忆模式)、chains(链组合策略)、document-processing(文档加载与索引)、callbacks(监控与可观测性),以及 agent-template.py / memory-config.yaml / chain-example.py 模板。

---
采编自 sickn33/antigravity-awesome-skills(MIT 许可)。

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…