[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JH3CBWS5VXQB24KNF37F2K":3,"skill-same:01M6JH3CBWS5VXQB24KNF37F2K":100},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":64,"commitSha":65,"skillDirectory":66,"forksCount":67,"repositoryHtmlUrl":68,"repositoryHomepageUrl":6,"ownerHtmlUrl":69,"ownerBlogUrl":6,"ownerDescription":70,"updatedAt":71,"install":72,"resources":85},"01M6JH3CBWS5VXQB24KNF37F2K","langchain",null,"Framework for building LLM-powered applications with agents, chains, and RAG. Supports multiple providers (OpenAI, Anthropic, Google), 500+ integrations, ReAct agents, tool calling, memory management, and vector store retrieval. Use for building chatbots, question-answering systems, autonomous agents, or RAG applications. Best for rapid prototyping and production deployments.","transaurus\u002Fstaging-davila7-claude-code-templates","transaurus","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F210882017?v=4","01M6JH1R6ZCRXGJCTDP5ZKZBE6","Page Turner Agent","01M6JH1RBBR2P6Y0XWDGM4B0G7",0,"MIT","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-langchain\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"integrations","for","orchestra","LLM Applications","prototyping","tool calling","autonomous","question","vector stores","google","tool","Providers","vector","framework","openai","core","rag","react","memory","2026-11-10 10:12:30",false,"---\nname: langchain\ndescription: Framework for building LLM-powered applications with agents, chains, and RAG. Supports multiple providers (OpenAI, Anthropic, Google), 500+ integrations, ReAct agents, tool calling, memory management, and vector store retrieval. Use for building chatbots, question-answering systems, autonomous agents, or RAG applications. Best for rapid prototyping and production deployments.\nversion: 1.0.0\nauthor: Orchestra Research\nlicense: MIT\ntags: [Agents, LangChain, RAG, Tool Calling, ReAct, Memory Management, Vector Stores, LLM Applications, Chatbots, Production]\ndependencies: [langchain, langchain-core, langchain-openai, langchain-anthropic]\n---\n\n# LangChain - Build LLM Applications with Agents & RAG\n\nThe most popular framework for building LLM-powered applications.\n\n## When to use LangChain\n\n**Use LangChain when:**\n- Building agents with tool calling and reasoning (ReAct pattern)\n- Implementing RAG (retrieval-augmented generation) pipelines\n- Need to swap LLM providers easily (OpenAI, Anthropic, Google)\n- Creating chatbots with conversation memory\n- Rapid prototyping of LLM applications\n- Production deployments with LangSmith observability\n\n**Metrics**:\n- **119,000+ GitHub stars**\n- **272,000+ repositories** use LangChain\n- **500+ integrations** (models, vector stores, tools)\n- **3,800+ contributors**\n\n**Use alternatives instead**:\n- **LlamaIndex**: RAG-focused, better for document Q&A\n- **LangGraph**: Complex stateful workflows, more control\n- **Haystack**: Production search pipelines\n- **Semantic Kernel**: Microsoft ecosystem\n\n## Quick start\n\n### Installation\n\n```bash\n# Core library (Python 3.10+)\npip install -U langchain\n\n# With OpenAI\npip install langchain-openai\n\n# With Anthropic\npip install langchain-anthropic\n\n# Common extras\npip install langchain-community  # 500+ integrations\npip install langchain-chroma     # Vector store\n```\n\n### Basic LLM usage\n\n```python\nfrom langchain_anthropic import ChatAnthropic\n\n# Initialize model\nllm = ChatAnthropic(model=\"claude-sonnet-4-5-20250929\")\n\n# Simple completion\nresponse = llm.invoke(\"Explain quantum computing in 2 sentences\")\nprint(response.content)\n```\n\n### Create an agent (ReAct pattern)\n\n```python\nfrom langchain.agents import create_agent\nfrom langchain_anthropic import ChatAnthropic\n\n# Define tools\ndef get_weather(city: str) -> str:\n    \"\"\"Get current weather for a city.\"\"\"\n    return f\"It's sunny in {city}, 72°F\"\n\ndef search_web(query: str) -> str:\n    \"\"\"Search the web for information.\"\"\"\n    return f\"Search results for: {query}\"\n\n# Create agent (\u003C10 lines!)\nagent = create_agent(\n    model=ChatAnthropic(model=\"claude-sonnet-4-5-20250929\"),\n    tools=[get_weather, search_web],\n    system_prompt=\"You are a helpful assistant. Use tools when needed.\"\n)\n\n# Run agent\nresult = agent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"What's the weather in Paris?\"}]})\nprint(result[\"messages\"][-1].content)\n```\n\n## Core concepts\n\n### 1. Models - LLM abstraction\n\n```python\nfrom langchain_openai import ChatOpenAI\nfrom langchain_anthropic import ChatAnthropic\nfrom langchain_google_genai import ChatGoogleGenerativeAI\n\n# Swap providers easily\nllm = ChatOpenAI(model=\"gpt-4o\")\nllm = ChatAnthropic(model=\"claude-sonnet-4-5-20250929\")\nllm = ChatGoogleGenerativeAI(model=\"gemini-2.0-flash-exp\")\n\n# Streaming\nfor chunk in llm.stream(\"Write a poem\"):\n    print(chunk.content, end=\"\", flush=True)\n```\n\n### 2. Chains - Sequential operations\n\n```python\nfrom langchain.chains import LLMChain\nfrom langchain.prompts import PromptTemplate\n\n# Define prompt template\nprompt = PromptTemplate(\n    input_variables=[\"topic\"],\n    template=\"Write a 3-sentence summary about {topic}\"\n)\n\n# Create chain\nchain = LLMChain(llm=llm, prompt=prompt)\n\n# Run chain\nresult = chain.run(topic=\"machine learning\")\n```\n\n### 3. Agents - Tool-using reasoning\n\n**ReAct (Reasoning + Acting) pattern:**\n\n```python\nfrom langchain.agents import create_tool_calling_agent, AgentExecutor\nfrom langchain.tools import Tool\n\n# Define custom tool\ncalculator = Tool(\n    name=\"Calculator\",\n    func=lambda x: eval(x),\n    description=\"Useful for math calculations. Input: valid Python expression.\"\n)\n\n# Create agent with tools\nagent = create_tool_calling_agent(\n    llm=llm,\n    tools=[calculator, search_web],\n    prompt=\"Answer questions using available tools\"\n)\n\n# Create executor\nagent_executor = AgentExecutor(agent=agent, tools=[calculator], verbose=True)\n\n# Run with reasoning\nresult = agent_executor.invoke({\"input\": \"What is 25 * 17 + 142?\"})\n```\n\n### 4. Memory - Conversation history\n\n```python\nfrom langchain.memory import ConversationBufferMemory\nfrom langchain.chains import ConversationChain\n\n# Add memory to track conversation\nmemory = ConversationBufferMemory()\n\nconversation = ConversationChain(\n    llm=llm,\n    memory=memory,\n    verbose=True\n)\n\n# Multi-turn conversation\nconversation.predict(input=\"Hi, I'm Alice\")\nconversation.predict(input=\"What's my name?\")  # Remembers \"Alice\"\n```\n\n## RAG (Retrieval-Augmented Generation)\n\n### Basic RAG pipeline\n\n```python\nfrom langchain_community.document_loaders import WebBaseLoader\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\nfrom langchain_openai import OpenAIEmbeddings\nfrom langchain_chroma import Chroma\nfrom langchain.chains import RetrievalQA\n\n# 1. Load documents\nloader = WebBaseLoader(\"https:\u002F\u002Fdocs.python.org\u002F3\u002Ftutorial\u002F\")\ndocs = loader.load()\n\n# 2. Split into chunks\ntext_splitter = RecursiveCharacterTextSplitter(\n    chunk_size=1000,\n    chunk_overlap=200\n)\nsplits = text_splitter.split_documents(docs)\n\n# 3. Create embeddings and vector store\nvectorstore = Chroma.from_documents(\n    documents=splits,\n    embedding=OpenAIEmbeddings()\n)\n\n# 4. Create retriever\nretriever = vectorstore.as_retriever(search_kwargs={\"k\": 4})\n\n# 5. Create QA chain\nqa_chain = RetrievalQA.from_chain_type(\n    llm=llm,\n    retriever=retriever,\n    return_source_documents=True\n)\n\n# 6. Query\nresult = qa_chain({\"query\": \"What are Python decorators?\"})\nprint(result[\"result\"])\nprint(f\"Sources: {result['source_documents']}\")\n```\n\n### Conversational RAG with memory\n\n```python\nfrom langchain.chains import ConversationalRetrievalChain\n\n# RAG with conversation memory\nqa = ConversationalRetrievalChain.from_llm(\n    llm=llm,\n    retriever=retriever,\n    memory=ConversationBufferMemory(\n        memory_key=\"chat_history\",\n        return_messages=True\n    )\n)\n\n# Multi-turn RAG\nqa({\"question\": \"What is Python used for?\"})\nqa({\"question\": \"Can you elaborate on web development?\"})  # Remembers context\n```\n\n## Advanced agent patterns\n\n### Structured output\n\n```python\nfrom langchain_core.pydantic_v1 import BaseModel, Field\n\n# Define schema\nclass WeatherReport(BaseModel):\n    city: str = Field(description=\"City name\")\n    temperature: float = Field(description=\"Temperature in Fahrenheit\")\n    condition: str = Field(description=\"Weather condition\")\n\n# Get structured response\nstructured_llm = llm.with_structured_output(WeatherReport)\nresult = structured_llm.invoke(\"What's the weather in SF? It's 65F and sunny\")\nprint(result.city, result.temperature, result.condition)\n```\n\n### Parallel tool execution\n\n```python\nfrom langchain.agents import create_tool_calling_agent\n\n# Agent automatically parallelizes independent tool calls\nagent = create_tool_calling_agent(\n    llm=llm,\n    tools=[get_weather, search_web, calculator]\n)\n\n# This will call get_weather(\"Paris\") and get_weather(\"London\") in parallel\nresult = agent.invoke({\n    \"messages\": [{\"role\": \"user\", \"content\": \"Compare weather in Paris and London\"}]\n})\n```\n\n### Streaming agent execution\n\n```python\n# Stream agent steps\nfor step in agent_executor.stream({\"input\": \"Research AI trends\"}):\n    if \"actions\" in step:\n        print(f\"Tool: {step['actions'][0].tool}\")\n    if \"output\" in step:\n        print(f\"Output: {step['output']}\")\n```\n\n## Common patterns\n\n### Multi-document QA\n\n```python\nfrom langchain.chains.qa_with_sources import load_qa_with_sources_chain\n\n# Load multiple documents\ndocs = [\n    loader.load(\"https:\u002F\u002Fdocs.python.org\"),\n    loader.load(\"https:\u002F\u002Fdocs.numpy.org\")\n]\n\n# QA with source citations\nchain = load_qa_with_sources_chain(llm, chain_type=\"stuff\")\nresult = chain({\"input_documents\": docs, \"question\": \"How to use numpy arrays?\"})\nprint(result[\"output_text\"])  # Includes source citations\n```\n\n### Custom tools with error handling\n\n```python\nfrom langchain.tools import tool\n\n@tool\ndef risky_operation(query: str) -> str:\n    \"\"\"Perform a risky operation that might fail.\"\"\"\n    try:\n        # Your operation here\n        result = perform_operation(query)\n        return f\"Success: {result}\"\n    except Exception as e:\n        return f\"Error: {str(e)}\"\n\n# Agent handles errors gracefully\nagent = create_agent(model=llm, tools=[risky_operation])\n```\n\n### LangSmith observability\n\n```python\nimport os\n\n# Enable tracing\nos.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\nos.environ[\"LANGCHAIN_API_KEY\"] = \"your-api-key\"\nos.environ[\"LANGCHAIN_PROJECT\"] = \"my-project\"\n\n# All chains\u002Fagents automatically traced\nagent = create_agent(model=llm, tools=[calculator])\nresult = agent.invoke({\"input\": \"Calculate 123 * 456\"})\n\n# View traces at smith.langchain.com\n```\n\n## Vector stores\n\n### Chroma (local)\n\n```python\nfrom langchain_chroma import Chroma\n\nvectorstore = Chroma.from_documents(\n    documents=docs,\n    embedding=OpenAIEmbeddings(),\n    persist_directory=\".\u002Fchroma_db\"\n)\n```\n\n### Pinecone (cloud)\n\n```python\nfrom langchain_pinecone import PineconeVectorStore\n\nvectorstore = PineconeVectorStore.from_documents(\n    documents=docs,\n    embedding=OpenAIEmbeddings(),\n    index_name=\"my-index\"\n)\n```\n\n### FAISS (similarity search)\n\n```python\nfrom langchain_community.vectorstores import FAISS\n\nvectorstore = FAISS.from_documents(docs, OpenAIEmbeddings())\nvectorstore.save_local(\"faiss_index\")\n\n# Load later\nvectorstore = FAISS.load_local(\"faiss_index\", OpenAIEmbeddings())\n```\n\n## Document loaders\n\n```python\n# Web pages\nfrom langchain_community.document_loaders import WebBaseLoader\nloader = WebBaseLoader(\"https:\u002F\u002Fexample.com\")\n\n# PDFs\nfrom langchain_community.document_loaders import PyPDFLoader\nloader = PyPDFLoader(\"paper.pdf\")\n\n# GitHub\nfrom langchain_community.document_loaders import GithubFileLoader\nloader = GithubFileLoader(repo=\"user\u002Frepo\", file_filter=lambda x: x.endswith(\".py\"))\n\n# CSV\nfrom langchain_community.document_loaders import CSVLoader\nloader = CSVLoader(\"data.csv\")\n```\n\n## Text splitters\n\n```python\n# Recursive (recommended for general text)\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\nsplitter = RecursiveCharacterTextSplitter(\n    chunk_size=1000,\n    chunk_overlap=200,\n    separators=[\"\\n\\n\", \"\\n\", \" \", \"\"]\n)\n\n# Code-aware\nfrom langchain.text_splitter import PythonCodeTextSplitter\nsplitter = PythonCodeTextSplitter(chunk_size=500)\n\n# Semantic (by meaning)\nfrom langchain_experimental.text_splitter import SemanticChunker\nsplitter = SemanticChunker(OpenAIEmbeddings())\n```\n\n## Best practices\n\n1. **Start simple** - Use `create_agent()` for most cases\n2. **Enable streaming** - Better UX for long responses\n3. **Add error handling** - Tools can fail, handle gracefully\n4. **Use LangSmith** - Essential for debugging agents\n5. **Optimize chunk size** - 500-1000 chars for RAG\n6. **Version prompts** - Track changes in production\n7. **Cache embeddings** - Expensive, cache when possible\n8. **Monitor costs** - Track token usage with LangSmith\n\n## Performance benchmarks\n\n| Operation | Latency | Notes |\n|-----------|---------|-------|\n| Simple LLM call | ~1-2s | Depends on provider |\n| Agent with 1 tool | ~3-5s | ReAct reasoning overhead |\n| RAG retrieval | ~0.5-1s | Vector search + LLM |\n| Embedding 1000 docs | ~10-30s | Depends on model |\n\n## LangChain vs LangGraph\n\n| Feature | LangChain | LangGraph |\n|---------|-----------|-----------|\n| **Best for** | Quick agents, RAG | Complex workflows |\n| **Abstraction level** | High | Low |\n| **Code to start** | \u003C10 lines | ~30 lines |\n| **Control** | Simple | Full control |\n| **Stateful workflows** | Limited | Native |\n| **Cyclic graphs** | No | Yes |\n| **Human-in-loop** | Basic | Advanced |\n\n**Use LangGraph when:**\n- Need stateful workflows with cycles\n- Require fine-grained control\n- Building multi-agent systems\n- Production apps with complex logic\n\n## References\n\n- **[Agents Guide](references\u002Fagents.md)** - ReAct, tool calling, streaming\n- **[RAG Guide](references\u002Frag.md)** - Document loaders, retrievers, QA chains\n- **[Integration Guide](references\u002Fintegration.md)** - Vector stores, LangSmith, deployment\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flangchain ⭐ 119,000+\n- **Docs**: https:\u002F\u002Fdocs.langchain.com\n- **API Reference**: https:\u002F\u002Freference.langchain.com\u002Fpython\n- **LangSmith**: https:\u002F\u002Fsmith.langchain.com (observability)\n- **Version**: 0.3+ (stable)\n- **License**: MIT\n\n\n","# LangChain - Build LLM Applications with Agents & RAG\n\nThe most popular framework for building LLM-powered applications.\n\n## When to use LangChain\n\n**Use LangChain when:**\n- Building agents with tool calling and reasoning (ReAct pattern)\n- Implementing RAG (retrieval-augmented generation) pipelines\n- Need to swap LLM providers easily (OpenAI, Anthropic, Google)\n- Creating chatbots with conversation memory\n- Rapid prototyping of LLM applications\n- Production deployments with LangSmith observability\n\n**Metrics**:\n- **119,000+ GitHub stars**\n- **272,000+ repositories** use LangChain\n- **500+ integrations** (models, vector stores, tools)\n- **3,800+ contributors**\n\n**Use alternatives instead**:\n- **LlamaIndex**: RAG-focused, better for document Q&A\n- **LangGraph**: Complex stateful workflows, more control\n- **Haystack**: Production search pipelines\n- **Semantic Kernel**: Microsoft ecosystem\n\n## Quick start\n\n### Installation\n\n```bash\n# Core library (Python 3.10+)\npip install -U langchain\n\n# With OpenAI\npip install langchain-openai\n\n# With Anthropic\npip install langchain-anthropic\n\n# Common extras\npip install langchain-community  # 500+ integrations\npip install langchain-chroma     # Vector store\n```\n\n### Basic LLM usage\n\n```python\nfrom langchain_anthropic import ChatAnthropic\n\n# Initialize model\nllm = ChatAnthropic(model=\"claude-sonnet-4-5-20250929\")\n\n# Simple completion\nresponse = llm.invoke(\"Explain quantum computing in 2 sentences\")\nprint(response.content)\n```\n\n### Create an agent (ReAct pattern)\n\n```python\nfrom langchain.agents import create_agent\nfrom langchain_anthropic import ChatAnthropic\n\n# Define tools\ndef get_weather(city: str) -> str:\n    \"\"\"Get current weather for a city.\"\"\"\n    return f\"It's sunny in {city}, 72°F\"\n\ndef search_web(query: str) -> str:\n    \"\"\"Search the web for information.\"\"\"\n    return f\"Search results for: {query}\"\n\n# Create agent (\u003C10 lines!)\nagent = create_agent(\n    model=ChatAnthropic(model=\"claude-sonnet-4-5-20250929\"),\n    tools=[get_weather, search_web],\n    system_prompt=\"You are a helpful assistant. Use tools when needed.\"\n)\n\n# Run agent\nresult = agent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"What's the weather in Paris?\"}]})\nprint(result[\"messages\"][-1].content)\n```\n\n## Core concepts\n\n### 1. Models - LLM abstraction\n\n```python\nfrom langchain_openai import ChatOpenAI\nfrom langchain_anthropic import ChatAnthropic\nfrom langchain_google_genai import ChatGoogleGenerativeAI\n\n# Swap providers easily\nllm = ChatOpenAI(model=\"gpt-4o\")\nllm = ChatAnthropic(model=\"claude-sonnet-4-5-20250929\")\nllm = ChatGoogleGenerativeAI(model=\"gemini-2.0-flash-exp\")\n\n# Streaming\nfor chunk in llm.stream(\"Write a poem\"):\n    print(chunk.content, end=\"\", flush=True)\n```\n\n### 2. Chains - Sequential operations\n\n```python\nfrom langchain.chains import LLMChain\nfrom langchain.prompts import PromptTemplate\n\n# Define prompt template\nprompt = PromptTemplate(\n    input_variables=[\"topic\"],\n    template=\"Write a 3-sentence summary about {topic}\"\n)\n\n# Create chain\nchain = LLMChain(llm=llm, prompt=prompt)\n\n# Run chain\nresult = chain.run(topic=\"machine learning\")\n```\n\n### 3. Agents - Tool-using reasoning\n\n**ReAct (Reasoning + Acting) pattern:**\n\n```python\nfrom langchain.agents import create_tool_calling_agent, AgentExecutor\nfrom langchain.tools import Tool\n\n# Define custom tool\ncalculator = Tool(\n    name=\"Calculator\",\n    func=lambda x: eval(x),\n    description=\"Useful for math calculations. Input: valid Python expression.\"\n)\n\n# Create agent with tools\nagent = create_tool_calling_agent(\n    llm=llm,\n    tools=[calculator, search_web],\n    prompt=\"Answer questions using available tools\"\n)\n\n# Create executor\nagent_executor = AgentExecutor(agent=agent, tools=[calculator], verbose=True)\n\n# Run with reasoning\nresult = agent_executor.invoke({\"input\": \"What is 25 * 17 + 142?\"})\n```\n\n### 4. Memory - Conversation history\n\n```python\nfrom langchain.memory import ConversationBufferMemory\nfrom langchain.chains import ConversationChain\n\n# Add memory to track conversation\nmemory = ConversationBufferMemory()\n\nconversation = ConversationChain(\n    llm=llm,\n    memory=memory,\n    verbose=True\n)\n\n# Multi-turn conversation\nconversation.predict(input=\"Hi, I'm Alice\")\nconversation.predict(input=\"What's my name?\")  # Remembers \"Alice\"\n```\n\n## RAG (Retrieval-Augmented Generation)\n\n### Basic RAG pipeline\n\n```python\nfrom langchain_community.document_loaders import WebBaseLoader\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\nfrom langchain_openai import OpenAIEmbeddings\nfrom langchain_chroma import Chroma\nfrom langchain.chains import RetrievalQA\n\n# 1. Load documents\nloader = WebBaseLoader(\"https:\u002F\u002Fdocs.python.org\u002F3\u002Ftutorial\u002F\")\ndocs = loader.load()\n\n# 2. Split into chunks\ntext_splitter = RecursiveCharacterTextSplitter(\n    chunk_size=1000,\n    chunk_overlap=200\n)\nsplits = text_splitter.split_documents(docs)\n\n# 3. Create embeddings and vector store\nvectorstore = Chroma.from_documents(\n    documents=splits,\n    embedding=OpenAIEmbeddings()\n)\n\n# 4. Create retriever\nretriever = vectorstore.as_retriever(search_kwargs={\"k\": 4})\n\n# 5. Create QA chain\nqa_chain = RetrievalQA.from_chain_type(\n    llm=llm,\n    retriever=retriever,\n    return_source_documents=True\n)\n\n# 6. Query\nresult = qa_chain({\"query\": \"What are Python decorators?\"})\nprint(result[\"result\"])\nprint(f\"Sources: {result['source_documents']}\")\n```\n\n### Conversational RAG with memory\n\n```python\nfrom langchain.chains import ConversationalRetrievalChain\n\n# RAG with conversation memory\nqa = ConversationalRetrievalChain.from_llm(\n    llm=llm,\n    retriever=retriever,\n    memory=ConversationBufferMemory(\n        memory_key=\"chat_history\",\n        return_messages=True\n    )\n)\n\n# Multi-turn RAG\nqa({\"question\": \"What is Python used for?\"})\nqa({\"question\": \"Can you elaborate on web development?\"})  # Remembers context\n```\n\n## Advanced agent patterns\n\n### Structured output\n\n```python\nfrom langchain_core.pydantic_v1 import BaseModel, Field\n\n# Define schema\nclass WeatherReport(BaseModel):\n    city: str = Field(description=\"City name\")\n    temperature: float = Field(description=\"Temperature in Fahrenheit\")\n    condition: str = Field(description=\"Weather condition\")\n\n# Get structured response\nstructured_llm = llm.with_structured_output(WeatherReport)\nresult = structured_llm.invoke(\"What's the weather in SF? It's 65F and sunny\")\nprint(result.city, result.temperature, result.condition)\n```\n\n### Parallel tool execution\n\n```python\nfrom langchain.agents import create_tool_calling_agent\n\n# Agent automatically parallelizes independent tool calls\nagent = create_tool_calling_agent(\n    llm=llm,\n    tools=[get_weather, search_web, calculator]\n)\n\n# This will call get_weather(\"Paris\") and get_weather(\"London\") in parallel\nresult = agent.invoke({\n    \"messages\": [{\"role\": \"user\", \"content\": \"Compare weather in Paris and London\"}]\n})\n```\n\n### Streaming agent execution\n\n```python\n# Stream agent steps\nfor step in agent_executor.stream({\"input\": \"Research AI trends\"}):\n    if \"actions\" in step:\n        print(f\"Tool: {step['actions'][0].tool}\")\n    if \"output\" in step:\n        print(f\"Output: {step['output']}\")\n```\n\n## Common patterns\n\n### Multi-document QA\n\n```python\nfrom langchain.chains.qa_with_sources import load_qa_with_sources_chain\n\n# Load multiple documents\ndocs = [\n    loader.load(\"https:\u002F\u002Fdocs.python.org\"),\n    loader.load(\"https:\u002F\u002Fdocs.numpy.org\")\n]\n\n# QA with source citations\nchain = load_qa_with_sources_chain(llm, chain_type=\"stuff\")\nresult = chain({\"input_documents\": docs, \"question\": \"How to use numpy arrays?\"})\nprint(result[\"output_text\"])  # Includes source citations\n```\n\n### Custom tools with error handling\n\n```python\nfrom langchain.tools import tool\n\n@tool\ndef risky_operation(query: str) -> str:\n    \"\"\"Perform a risky operation that might fail.\"\"\"\n    try:\n        # Your operation here\n        result = perform_operation(query)\n        return f\"Success: {result}\"\n    except Exception as e:\n        return f\"Error: {str(e)}\"\n\n# Agent handles errors gracefully\nagent = create_agent(model=llm, tools=[risky_operation])\n```\n\n### LangSmith observability\n\n```python\nimport os\n\n# Enable tracing\nos.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\nos.environ[\"LANGCHAIN_API_KEY\"] = \"your-api-key\"\nos.environ[\"LANGCHAIN_PROJECT\"] = \"my-project\"\n\n# All chains\u002Fagents automatically traced\nagent = create_agent(model=llm, tools=[calculator])\nresult = agent.invoke({\"input\": \"Calculate 123 * 456\"})\n\n# View traces at smith.langchain.com\n```\n\n## Vector stores\n\n### Chroma (local)\n\n```python\nfrom langchain_chroma import Chroma\n\nvectorstore = Chroma.from_documents(\n    documents=docs,\n    embedding=OpenAIEmbeddings(),\n    persist_directory=\".\u002Fchroma_db\"\n)\n```\n\n### Pinecone (cloud)\n\n```python\nfrom langchain_pinecone import PineconeVectorStore\n\nvectorstore = PineconeVectorStore.from_documents(\n    documents=docs,\n    embedding=OpenAIEmbeddings(),\n    index_name=\"my-index\"\n)\n```\n\n### FAISS (similarity search)\n\n```python\nfrom langchain_community.vectorstores import FAISS\n\nvectorstore = FAISS.from_documents(docs, OpenAIEmbeddings())\nvectorstore.save_local(\"faiss_index\")\n\n# Load later\nvectorstore = FAISS.load_local(\"faiss_index\", OpenAIEmbeddings())\n```\n\n## Document loaders\n\n```python\n# Web pages\nfrom langchain_community.document_loaders import WebBaseLoader\nloader = WebBaseLoader(\"https:\u002F\u002Fexample.com\")\n\n# PDFs\nfrom langchain_community.document_loaders import PyPDFLoader\nloader = PyPDFLoader(\"paper.pdf\")\n\n# GitHub\nfrom langchain_community.document_loaders import GithubFileLoader\nloader = GithubFileLoader(repo=\"user\u002Frepo\", file_filter=lambda x: x.endswith(\".py\"))\n\n# CSV\nfrom langchain_community.document_loaders import CSVLoader\nloader = CSVLoader(\"data.csv\")\n```\n\n## Text splitters\n\n```python\n# Recursive (recommended for general text)\nfrom langchain.text_splitter import RecursiveCharacterTextSplitter\nsplitter = RecursiveCharacterTextSplitter(\n    chunk_size=1000,\n    chunk_overlap=200,\n    separators=[\"\\n\\n\", \"\\n\", \" \", \"\"]\n)\n\n# Code-aware\nfrom langchain.text_splitter import PythonCodeTextSplitter\nsplitter = PythonCodeTextSplitter(chunk_size=500)\n\n# Semantic (by meaning)\nfrom langchain_experimental.text_splitter import SemanticChunker\nsplitter = SemanticChunker(OpenAIEmbeddings())\n```\n\n## Best practices\n\n1. **Start simple** - Use `create_agent()` for most cases\n2. **Enable streaming** - Better UX for long responses\n3. **Add error handling** - Tools can fail, handle gracefully\n4. **Use LangSmith** - Essential for debugging agents\n5. **Optimize chunk size** - 500-1000 chars for RAG\n6. **Version prompts** - Track changes in production\n7. **Cache embeddings** - Expensive, cache when possible\n8. **Monitor costs** - Track token usage with LangSmith\n\n## Performance benchmarks\n\n| Operation | Latency | Notes |\n|-----------|---------|-------|\n| Simple LLM call | ~1-2s | Depends on provider |\n| Agent with 1 tool | ~3-5s | ReAct reasoning overhead |\n| RAG retrieval | ~0.5-1s | Vector search + LLM |\n| Embedding 1000 docs | ~10-30s | Depends on model |\n\n## LangChain vs LangGraph\n\n| Feature | LangChain | LangGraph |\n|---------|-----------|-----------|\n| **Best for** | Quick agents, RAG | Complex workflows |\n| **Abstraction level** | High | Low |\n| **Code to start** | \u003C10 lines | ~30 lines |\n| **Control** | Simple | Full control |\n| **Stateful workflows** | Limited | Native |\n| **Cyclic graphs** | No | Yes |\n| **Human-in-loop** | Basic | Advanced |\n\n**Use LangGraph when:**\n- Need stateful workflows with cycles\n- Require fine-grained control\n- Building multi-agent systems\n- Production apps with complex logic\n\n## References\n\n- **[Agents Guide](references\u002Fagents.md)** - ReAct, tool calling, streaming\n- **[RAG Guide](references\u002Frag.md)** - Document loaders, retrievers, QA chains\n- **[Integration Guide](references\u002Fintegration.md)** - Vector stores, LangSmith, deployment\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flangchain ⭐ 119,000+\n- **Docs**: https:\u002F\u002Fdocs.langchain.com\n- **API Reference**: https:\u002F\u002Freference.langchain.com\u002Fpython\n- **LangSmith**: https:\u002F\u002Fsmith.langchain.com (observability)\n- **Version**: 0.3+ (stable)\n- **License**: MIT\n\n\n",{"name":5,"tags":48,"author":58,"license":15,"version":59,"description":7,"dependencies":60},[49,50,51,52,53,54,55,27,56,57],"Agents","LangChain","RAG","Tool Calling","ReAct","Memory Management","Vector Stores","Chatbots","Production","Orchestra Research","1.0.0",[5,61,62,63],"langchain-core","langchain-openai","langchain-anthropic","main","34fa6acf794b9a6310d298cbb8fb8c9420a5edcf","cli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-langchain",2,"https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates","https:\u002F\u002Fgithub.com\u002Ftransaurus","Automated works of Page Turner","2026-03-28 10:12:59",{"source":8,"skillName":5,"commands":73,"prompt":83,"zipAvailable":84},[74,77,80],{"tool":75,"command":76},"npx","npx skills add transaurus\u002Fstaging-davila7-claude-code-templates --skill langchain",{"tool":78,"command":79},"bunx","bunx skills add transaurus\u002Fstaging-davila7-claude-code-templates --skill langchain",{"tool":81,"command":82},"pnpm","pnpm dlx skills add transaurus\u002Fstaging-davila7-claude-code-templates --skill langchain","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-langchain\u002FSKILL.md",true,[86,92,96],{"path":87,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fagents.md","REFERENCE","参考文档",12661,"https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-langchain\u002Freferences\u002Fagents.md",{"path":93,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fintegration.md",11832,"https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-langchain\u002Freferences\u002Fintegration.md",{"path":97,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Frag.md",14490,"https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-langchain\u002Freferences\u002Frag.md",[101,129,149,173,193,219],{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":110,"publishedAt":43},"01M6JMRJR3BE0HGWFWDZSB853S","zapier-make-patterns","No-code automation democratizes workflow building. Zapier and Make (formerly Integromat) let non-developers automate business processes without writing code. But no-code doesn't mean no-complexity - these platforms have their own patterns, pitfalls, and breaking points.  This skill covers when to use which platform, how to build reliable automations, and when to graduate to code-based solutions. Key insight: Zapier optimizes for simplicity and integrations (7000+ apps), Make optimizes for power","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fzapier-make-patterns\u002FSKILL.md",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[111,112,113,114,115,116,117,118,24,119,120,121,122,123,124,125,126,127,25,128],"zapier make patterns","patterns","make","zapier","writing","workflow","automation","code","business","use","power","complexity","platform","apps","how to","No-Code","which","spawner",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":43},"01M6JMR8YK6SWPCTG1MCQTMN9S","yeet","Use only when the user explicitly asks to stage, commit, push, and open a GitHub pull request in one flow using the GitHub CLI (`gh`).","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fyeet\u002FSKILL.md",[],[131,136,137,138,139,38,140,141,142,143,144,145,120,146,147,148],"cli","github","commit","pull request","pull","push","flow","open","gh","user","only","stage","github cli",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":156,"publishedAt":43},"01M6JMQNFE64ZASQK90HARRXW8","workflow-automation","Workflow automation is the infrastructure that makes AI agents reliable. Without durable execution, a network hiccup during a 10-step payment flow means lost money and angry customers. With it, workflows resume exactly where they left off.  This skill covers the platforms (n8n, Temporal, Inngest) and patterns (sequential, parallel, orchestrator-worker) that turn brittle scripts into production-grade automation.  Key insight: The platforms make different tradeoffs. n8n optimizes for accessibility","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fworkflow-automation\u002FSKILL.md",[155],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},[116,117,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,25,128],"Workflow Automation","ai agents","accessibility","workflows","apache","execution","inngest","parallel","orchestrator","resume","n8n","payment","worker","scripts","temporal","with",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":43},"01M6JMQDYJ0XETERPHGDR3EVGN","trigger-dev","Trigger.dev expert for background jobs, AI workflows, and reliable async execution with excellent developer experience and TypeScript-first design. Use when: trigger.dev, trigger dev, background task, ai background job, long running task.","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Ftrigger-dev\u002FSKILL.md",[],[180,181,182,183,184,160,185,161,162,186,120,187,188,189,190,191,192,172,25,128],"dev","trigger dev","trigger","design","typescript","async execution","first","async","developer experience","expert","task","background jobs","long",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":202,"publishedAt":43},"01M6JMQ5J6KK3GSX9FJCWWK6G6","planning-with-files","Transforms workflow to use Manus-style persistent markdown files for planning, progress tracking, and knowledge storage. Use when starting complex tasks, multi-step projects, research tasks, or when the user mentions planning, organizing work, tracking progress, or wants structured output.","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fplanning-with-files\u002FSKILL.md",[199],{"categoryNo":200,"categoryName":201,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[203,204,205,172,206,116,207,208,209,210,211,212,120,213,214,215,216,217,218,25],"planning with files","planning","files","with files","storage","tasks","markdown","knowledge","projects","work","manus","structured output","progress","transforms","multi","output",{"skillNo":220,"name":221,"nameZh":6,"description":222,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":223,"categories":224,"keywords":229,"publishedAt":43},"01M6JMPWAT60RXXNEC4V9TRBRS","n8n-workflow-patterns","Proven workflow architectural patterns from real n8n workflows. Use when building new workflows, designing workflow structure, choosing workflow patterns, planning workflow architecture, or asking about webhook processing, HTTP API integration, database operations, AI agent workflows, or scheduled tasks.","https:\u002F\u002Fgithub.com\u002Ftransaurus\u002Fstaging-davila7-claude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fn8n\u002Fn8n-workflow-patterns\u002FSKILL.md",[225,228],{"categoryNo":226,"categoryName":227,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},[116,230,167,231,112,232,233,160,234,208,204,235,236,237,238,239,240,241,242,243],"n8n workflow patterns","workflow patterns","n8n workflow","ai agent","architecture","database","api","planning workflow","structure","database operations","webhook","processing","http api","scheduled"]