[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KX2D69PSXWJKTT9J3QDXM2":3,"skill-same:01M6KX2D69PSXWJKTT9J3QDXM2":97},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":63,"commitSha":64,"skillDirectory":65,"forksCount":13,"repositoryHtmlUrl":66,"repositoryHomepageUrl":6,"ownerHtmlUrl":67,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":68,"install":69,"resources":82},"01M6KX2D69PSXWJKTT9J3QDXM2","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.","endman100\u002Fskill-router-nexus","endman100","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F31997019?v=4","01M6KPDX17BYDWW4RRB0TNGGMX","01M6KPDX64Y2QBEWVFG5W5PWPF",0,"MIT","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FLLM-and-Chatbot\u002Flangchain\u002Flangchain\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[5,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"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":47,"author":57,"license":14,"version":58,"description":7,"dependencies":59},[48,49,50,51,52,53,54,26,55,56],"Agents","LangChain","RAG","Tool Calling","ReAct","Memory Management","Vector Stores","Chatbots","Production","Orchestra Research","1.0.0",[5,60,61,62],"langchain-core","langchain-openai","langchain-anthropic","main","f19b254e8975d0bfddb394686706106930d7964d","LLM-and-Chatbot\u002Flangchain\u002Flangchain","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus","https:\u002F\u002Fgithub.com\u002Fendman100","2026-11-12 18:13:37",{"source":8,"skillName":5,"commands":70,"prompt":80,"zipAvailable":81},[71,74,77],{"tool":72,"command":73},"npx","npx skills add endman100\u002Fskill-router-nexus --skill langchain",{"tool":75,"command":76},"bunx","bunx skills add endman100\u002Fskill-router-nexus --skill langchain",{"tool":78,"command":79},"pnpm","pnpm dlx skills add endman100\u002Fskill-router-nexus --skill langchain","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FLLM-and-Chatbot\u002Flangchain\u002Flangchain\u002FSKILL.md",true,[83,89,93],{"path":84,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fagents.md","REFERENCE","参考文档",12661,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FLLM-and-Chatbot\u002Flangchain\u002Flangchain\u002Freferences\u002Fagents.md",{"path":90,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fintegration.md",11832,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FLLM-and-Chatbot\u002Flangchain\u002Flangchain\u002Freferences\u002Fintegration.md",{"path":94,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Frag.md",14490,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FLLM-and-Chatbot\u002Flangchain\u002Flangchain\u002Freferences\u002Frag.md",[98,122,157,180,189,213],{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":102,"sourceHtmlUrl":103,"categories":104,"keywords":110,"publishedAt":42},"01M6MPCT5BXVER8HQZTW3QE9AS","create-master","基于佛教经典文献，生成特定高僧大德的 AI 教学角色","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FMetaphysics-and-Spirituality\u002FMaster-skill\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FMetaphysics-and-Spirituality\u002FMaster-skill\u002FSKILL.md",[105],{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[111,112,113,114,115,116,117,118,119,120,121],"create master","master","create","生成","true","webfetch","edit","write","read","grep","Bash",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":126,"sourceHtmlUrl":127,"categories":128,"keywords":138,"publishedAt":42},"01M6M43AKE95Y64E1JRXEF5QQ3","writing-dna-skill","从至少 20 篇完整文章中蒸馏可复用的写作 DNA，分析语言、文章结构、选题逻辑、素材策略、认知框架和视觉风格，并生成 Writing-DNA.md；按该 DNA 写作时会读取全部蒸馏产物和 5 篇相关原文。用于中英文作者、账号、品牌或出版物的风格分析与一致性写作。 Distill reusable Writing DNA from at least 20 complete articles for Chinese or English authors, publications, brands, and accounts; use for language, structure, topic logic, source strategy, cognitive-frame, and visual-style analysis.","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fwriting-dna-skill\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fwriting-dna-skill\u002FSKILL.md",[129,132,135],{"categoryNo":130,"categoryName":131,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":133,"categoryName":134,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":136,"categoryName":137,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000036","内容创作者",[139,140,141,142,143,144,145,146,147,148,149,150,151,114,152,153,154,24,155,156],"writing dna skill","DNA","writing","strategy","english","logic","visual","structure","chinese","reusable","use","style","distill","analysis","frame","source","at","complete",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":161,"sourceHtmlUrl":162,"categories":163,"keywords":166,"publishedAt":42},"01M6M428TTCGQ4ME3KY99VN037","stop-slop","Remove AI writing patterns from prose. Use when drafting, editing, or reviewing text to eliminate predictable AI tells.","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fstop-slop\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fstop-slop\u002FSKILL.md",[164,165],{"categoryNo":130,"categoryName":131,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":136,"categoryName":137,"taxonomyType":108,"taxonomyTypeDesc":109},[167,168,169,170,171,172,173,174,175,149,176,177,178,24,179,141],"slop","stop slop","stop","drafting","when","drafts","https","patterns","prose","remove","editing","text","content",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":184,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":42},"01M6M41X0B7EBX42TK435DMGGR","shuorenhua","检查和清理中英文文本里的 AI 套路，适用于“去 AI 味”“说人话”“自然一点”“别像模板”“先标问题”这类改写和审稿需求；按场景控制力度，同时保留事实、术语、语域和责任主体。","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fshuorenhua\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fshuorenhua\u002FSKILL.md",[],[182,188],"文本",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":193,"sourceHtmlUrl":194,"categories":195,"keywords":196,"publishedAt":42},"01M6M3ZD12WBEW5KXKDM4N6DFG","naming","Name products, SaaS, brands, open source projects, bots, and apps. Use when the user needs to name something, find a brand name, or pick a product name. Metaphor-driven process that produces memorable, meaningful names and avoids AI slop.","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fnaming-main\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fnaming-main\u002FSKILL.md",[],[191,197,198,199,200,201,149,202,119,154,203,204,205,206,121,207,208,209,210,171,211,212,167],"repo","websearch","product name","apps","bots","view","brand","pick","gh","projects","open","saas","open source","product","describe","ai slop",{"skillNo":214,"name":215,"nameZh":6,"description":216,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":217,"sourceHtmlUrl":218,"categories":219,"keywords":221,"publishedAt":42},"01M6M3YVXAFAAWJ7F6JMPFREYE","humanizer-zh","去除文本中的 AI 生成痕迹。适用于编辑或审阅文本，使其听起来更自然、更像人类书写。\n基于维基百科的\"AI 写作特征\"综合指南。检测并修复以下模式：夸大的象征意义、\n宣传性语言、以 -ing 结尾的肤浅分析、模糊的归因、破折号过度使用、三段式法则、\nAI 词汇、否定式排比、过多的连接性短语。","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fhumanizer-zh\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FWriting-and-Content\u002Fhumanizer-zh\u002FSKILL.md",[220],{"categoryNo":130,"categoryName":131,"taxonomyType":20,"taxonomyTypeDesc":21},[222,223,224,119,118,117,141,114,188,225,167,169],"humanizer","zh","humanizer zh","翻译"]