{"id":"a60a81ab-0b9e-4934-b4be-1f73c5ca4794","shortId":"ZYMuBt","kind":"skill","title":"llm-application-dev-langchain-agent","tagline":"You are an expert LangChain agent developer specializing in production-grade AI systems using LangChain 0.1+ and LangGraph.","description":"# LangChain/LangGraph Agent Development Expert\n\nYou are an expert LangChain agent developer specializing in production-grade AI systems using LangChain 0.1+ and LangGraph.\n\n## Use this skill when\n\n- Working on langchain/langgraph agent development expert tasks or workflows\n- Needing guidance, best practices, or checklists for langchain/langgraph agent development expert\n\n## Do not use this skill when\n\n- The task is unrelated to langchain/langgraph agent development expert\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources/implementation-playbook.md`.\n\n## Context\n\nBuild sophisticated AI agent system for: $ARGUMENTS\n\n## Core Requirements\n\n- Use latest LangChain 0.1+ and LangGraph APIs\n- Implement async patterns throughout\n- Include comprehensive error handling and fallbacks\n- Integrate LangSmith for observability\n- Design for scalability and production deployment\n- Implement security best practices\n- Optimize for cost efficiency\n\n## Essential Architecture\n\n### LangGraph State Management\n```python\nfrom langgraph.graph import StateGraph, MessagesState, START, END\nfrom langgraph.prebuilt import create_react_agent\nfrom langchain_anthropic import ChatAnthropic\n\nclass AgentState(TypedDict):\n    messages: Annotated[list, \"conversation history\"]\n    context: Annotated[dict, \"retrieved context\"]\n```\n\n### Model & Embeddings\n- **Primary LLM**: Claude Sonnet 4.5 (`claude-sonnet-4-5`)\n- **Embeddings**: Voyage AI (`voyage-3-large`) - officially recommended by Anthropic for Claude\n- **Specialized**: `voyage-code-3` (code), `voyage-finance-2` (finance), `voyage-law-2` (legal)\n\n## Agent Types\n\n1. **ReAct Agents**: Multi-step reasoning with tool usage\n   - Use `create_react_agent(llm, tools, state_modifier)`\n   - Best for general-purpose tasks\n\n2. **Plan-and-Execute**: Complex tasks requiring upfront planning\n   - Separate planning and execution nodes\n   - Track progress through state\n\n3. **Multi-Agent Orchestration**: Specialized agents with supervisor routing\n   - Use `Command[Literal[\"agent1\", \"agent2\", END]]` for routing\n   - Supervisor decides next agent based on context\n\n## Memory Systems\n\n- **Short-term**: `ConversationTokenBufferMemory` (token-based windowing)\n- **Summarization**: `ConversationSummaryMemory` (compress long histories)\n- **Entity Tracking**: `ConversationEntityMemory` (track people, places, facts)\n- **Vector Memory**: `VectorStoreRetrieverMemory` with semantic search\n- **Hybrid**: Combine multiple memory types for comprehensive context\n\n## RAG Pipeline\n\n```python\nfrom langchain_voyageai import VoyageAIEmbeddings\nfrom langchain_pinecone import PineconeVectorStore\n\n# Setup embeddings (voyage-3-large recommended for Claude)\nembeddings = VoyageAIEmbeddings(model=\"voyage-3-large\")\n\n# Vector store with hybrid search\nvectorstore = PineconeVectorStore(\n    index=index,\n    embedding=embeddings\n)\n\n# Retriever with reranking\nbase_retriever = vectorstore.as_retriever(\n    search_type=\"hybrid\",\n    search_kwargs={\"k\": 20, \"alpha\": 0.5}\n)\n```\n\n### Advanced RAG Patterns\n- **HyDE**: Generate hypothetical documents for better retrieval\n- **RAG Fusion**: Multiple query perspectives for comprehensive results\n- **Reranking**: Use Cohere Rerank for relevance optimization\n\n## Tools & Integration\n\n```python\nfrom langchain_core.tools import StructuredTool\nfrom pydantic import BaseModel, Field\n\nclass ToolInput(BaseModel):\n    query: str = Field(description=\"Query to process\")\n\nasync def tool_function(query: str) -> str:\n    # Implement with error handling\n    try:\n        result = await external_call(query)\n        return result\n    except Exception as e:\n        return f\"Error: {str(e)}\"\n\ntool = StructuredTool.from_function(\n    func=tool_function,\n    name=\"tool_name\",\n    description=\"What this tool does\",\n    args_schema=ToolInput,\n    coroutine=tool_function\n)\n```\n\n## Production Deployment\n\n### FastAPI Server with Streaming\n```python\nfrom fastapi import FastAPI\nfrom fastapi.responses import StreamingResponse\n\n@app.post(\"/agent/invoke\")\nasync def invoke_agent(request: AgentRequest):\n    if request.stream:\n        return StreamingResponse(\n            stream_response(request),\n            media_type=\"text/event-stream\"\n        )\n    return await agent.ainvoke({\"messages\": [...]})\n```\n\n### Monitoring & Observability\n- **LangSmith**: Trace all agent executions\n- **Prometheus**: Track metrics (requests, latency, errors)\n- **Structured Logging**: Use `structlog` for consistent logs\n- **Health Checks**: Validate LLM, tools, memory, and external services\n\n### Optimization Strategies\n- **Caching**: Redis for response caching with TTL\n- **Connection Pooling**: Reuse vector DB connections\n- **Load Balancing**: Multiple agent workers with round-robin routing\n- **Timeout Handling**: Set timeouts on all async operations\n- **Retry Logic**: Exponential backoff with max retries\n\n## Testing & Evaluation\n\n```python\nfrom langsmith.evaluation import evaluate\n\n# Run evaluation suite\neval_config = RunEvalConfig(\n    evaluators=[\"qa\", \"context_qa\", \"cot_qa\"],\n    eval_llm=ChatAnthropic(model=\"claude-sonnet-4-5\")\n)\n\nresults = await evaluate(\n    agent_function,\n    data=dataset_name,\n    evaluators=eval_config\n)\n```\n\n## Key Patterns\n\n### State Graph Pattern\n```python\nbuilder = StateGraph(MessagesState)\nbuilder.add_node(\"node1\", node1_func)\nbuilder.add_node(\"node2\", node2_func)\nbuilder.add_edge(START, \"node1\")\nbuilder.add_conditional_edges(\"node1\", router, {\"a\": \"node2\", \"b\": END})\nbuilder.add_edge(\"node2\", END)\nagent = builder.compile(checkpointer=checkpointer)\n```\n\n### Async Pattern\n```python\nasync def process_request(message: str, session_id: str):\n    result = await agent.ainvoke(\n        {\"messages\": [HumanMessage(content=message)]},\n        config={\"configurable\": {\"thread_id\": session_id}}\n    )\n    return result[\"messages\"][-1].content\n```\n\n### Error Handling Pattern\n```python\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\n@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))\nasync def call_with_retry():\n    try:\n        return await llm.ainvoke(prompt)\n    except Exception as e:\n        logger.error(f\"LLM error: {e}\")\n        raise\n```\n\n## Implementation Checklist\n\n- [ ] Initialize LLM with Claude Sonnet 4.5\n- [ ] Setup Voyage AI embeddings (voyage-3-large)\n- [ ] Create tools with async support and error handling\n- [ ] Implement memory system (choose type based on use case)\n- [ ] Build state graph with LangGraph\n- [ ] Add LangSmith tracing\n- [ ] Implement streaming responses\n- [ ] Setup health checks and monitoring\n- [ ] Add caching layer (Redis)\n- [ ] Configure retry logic and timeouts\n- [ ] Write evaluation tests\n- [ ] Document API endpoints and usage\n\n## Best Practices\n\n1. **Always use async**: `ainvoke`, `astream`, `aget_relevant_documents`\n2. **Handle errors gracefully**: Try/except with fallbacks\n3. **Monitor everything**: Trace, log, and metric all operations\n4. **Optimize costs**: Cache responses, use token limits, compress memory\n5. **Secure secrets**: Environment variables, never hardcode\n6. **Test thoroughly**: Unit tests, integration tests, evaluation suites\n7. **Document extensively**: API docs, architecture diagrams, runbooks\n8. **Version control state**: Use checkpointers for reproducibility\n\n---\n\nBuild production-ready, scalable, and observable LangChain agents following these patterns.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["llm","application","dev","langchain","agent","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills"],"capabilities":["skill","source-sickn33","skill-llm-application-dev-langchain-agent","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/llm-application-dev-langchain-agent","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34726 github stars · SKILL.md body (7,907 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T12:51:10.765Z","embedding":null,"createdAt":"2026-04-18T21:40:05.098Z","updatedAt":"2026-04-23T12:51:10.765Z","lastSeenAt":"2026-04-23T12:51:10.765Z","tsv":"'-1':714 '-3':222,368,377,777 '-5':217,634 '/agent/invoke':517 '0.1':23,46,137 '0.5':405 '1':248,739,831 '10':743 '2':239,244,272,840 '20':403 '3':234,291,734,847 '4':216,633,741,856 '4.5':212,771 '5':866 '6':873 '7':882 '8':890 'action':113 'add':801,812 'advanc':406 'agent':6,12,27,35,56,70,85,128,187,246,250,261,294,297,312,521,543,585,638,682,906 'agent.ainvoke':536,700 'agent1':304 'agent2':305 'agentrequest':523 'agentst':194 'aget':837 'ai':19,42,127,220,774 'ainvok':835 'alpha':404 'alway':832 'annot':197,202 'anthrop':190,227 'api':140,825,885 'app.post':516 'appli':105 'applic':3 'architectur':170,887 'arg':495 'argument':131 'ask':943 'astream':836 'async':142,453,518,598,686,689,744,782,834 'attempt':726,733 'await':466,535,636,699,751 'b':676 'backoff':603 'balanc':583 'base':313,324,393,792 'basemodel':441,445 'best':64,107,163,266,829 'better':414 'boundari':951 'build':125,796,898 'builder':652 'builder.add':655,660,665,669,678 'builder.compile':683 'cach':569,573,813,859 'call':468,746 'case':795 'chatanthrop':192,628 'check':559,809 'checklist':67,765 'checkpoint':684,685,895 'choos':790 'clarif':945 'clarifi':99 'class':193,443 'claud':210,214,229,372,631,769 'claude-sonnet':213,630 'clear':918 'code':233,235 'coher':426 'combin':345 'command':302 'complex':277 'comprehens':146,350,422 'compress':328,864 'condit':670 'config':618,645,705 'configur':706,816 'connect':576,581 'consist':556 'constraint':101 'content':703,715 'context':124,201,205,315,351,622 'control':892 'convers':199 'conversationentitymemori':333 'conversationsummarymemori':327 'conversationtokenbuffermemori':321 'core':132 'coroutin':498 'cost':167,858 'cot':624 'creat':185,259,779 'criteria':954 'data':640 'dataset':641 'db':580 'decid':310 'def':454,519,690,745 'deploy':160,502 'describ':922 'descript':449,490 'design':155 'detail':118 'dev':4 'develop':13,28,36,57,71,86 'diagram':888 'dict':203 'differ':91 'doc':886 'document':412,824,839,883 'domain':92 'e':475,480,757,762 'edg':666,671,679 'effici':168 'embed':207,218,366,373,388,389,775 'end':181,306,677,681 'endpoint':826 'entiti':331 'environ':869,934 'environment-specif':933 'error':147,462,478,550,716,761,785,842 'essenti':169 'eval':617,626,644 'evalu':608,613,615,620,637,643,822,880 'everyth':849 'exampl':119 'except':472,473,754,755 'execut':276,285,544 'expert':10,29,33,58,72,87,939 'exponenti':602,728,737 'extens':884 'extern':467,565 'f':477,759 'fact':337 'fallback':150,846 'fastapi':503,509,511 'fastapi.responses':513 'field':442,448 'financ':238,240 'follow':907 'func':484,659,664 'function':456,483,486,500,639 'fusion':417 'general':269 'general-purpos':268 'generat':410 'goal':100 'grace':843 'grade':18,41 'graph':649,798 'guidanc':63 'handl':148,463,593,717,786,841 'hardcod':872 'health':558,808 'histori':200,330 'humanmessag':702 'hybrid':344,382,399 'hyde':409 'hypothet':411 'id':696,708,710 'implement':141,161,460,764,787,804 'import':177,184,191,358,363,436,440,510,514,612,722 'includ':145 'index':386,387 'initi':766 'input':104,948 'instruct':98 'integr':151,432,878 'invok':520 'k':402 'key':646 'kwarg':401 'langchain':5,11,22,34,45,136,189,356,361,905 'langchain/langgraph':26,55,69,84 'langchain_core.tools':435 'langgraph':25,48,139,171,800 'langgraph.graph':176 'langgraph.prebuilt':183 'langsmith':152,540,802 'langsmith.evaluation':611 'larg':223,369,378,778 'latenc':549 'latest':135 'law':243 'layer':814 'legal':245 'limit':863,910 'list':198 'liter':303 'llm':2,209,262,561,627,760,767 'llm-application-dev-langchain-ag':1 'llm.ainvoke':752 'load':582 'log':552,557,851 'logger.error':758 'logic':601,818 'long':329 'manag':173 'match':919 'max':605,742 'media':531 'memori':316,339,347,563,788,865 'messag':196,537,693,701,704,713 'messagesst':179,654 'metric':547,853 'min':740 'miss':956 'model':206,375,629 'modifi':265 'monitor':538,811,848 'multi':252,293 'multi-ag':292 'multi-step':251 'multipl':346,418,584 'multipli':738 'name':487,489,642 'need':62,89 'never':871 'next':311 'node':286,656,661 'node1':657,658,668,672 'node2':662,663,675,680 'observ':154,539,904 'offici':224 'open':122 'oper':599,855 'optim':165,430,567,857 'orchestr':295 'outcom':111 'output':928 'outsid':95 'pattern':143,408,647,650,687,718,909 'peopl':335 'permiss':949 'perspect':420 'pinecon':362 'pineconevectorstor':364,385 'pipelin':353 'place':336 'plan':274,281,283 'plan-and-execut':273 'pool':577 'practic':65,108,164,830 'primari':208 'process':452,691 'product':17,40,159,501,900 'production-grad':16,39 'production-readi':899 'progress':288 'prometheus':545 'prompt':753 'provid':112 'purpos':270 'pydant':439 'python':174,354,433,507,609,651,688,719 'qa':621,623,625 'queri':419,446,450,457,469 'rag':352,407,416 'rais':763 'react':186,249,260 'readi':901 'reason':254 'recommend':225,370 'redi':570,815 'relev':106,429,838 'reproduc':897 'request':522,530,548,692 'request.stream':525 'requir':103,121,133,279,947 'rerank':392,424,427 'resources/implementation-playbook.md':123 'respons':529,572,806,860 'result':423,465,471,635,698,712 'retri':600,606,723,729,748,817 'retriev':204,390,394,396,415 'return':470,476,526,534,711,750 'reus':578 'review':940 'robin':590 'round':589 'round-robin':588 'rout':300,308,591 'router':673 'run':614 'runbook':889 'runevalconfig':619 'safeti':950 'scalabl':157,902 'schema':496 'scope':97,921 'search':343,383,397,400 'secret':868 'secur':162,867 'semant':342 'separ':282 'server':504 'servic':566 'session':695,709 'set':594 'setup':365,772,807 'short':319 'short-term':318 'skill':51,77,913 'skill-llm-application-dev-langchain-agent' 'sonnet':211,215,632,770 'sophist':126 'source-sickn33' 'special':14,37,230,296 'specif':935 'start':180,667 'state':172,264,290,648,797,893 'stategraph':178,653 'step':114,253 'stop':724,730,731,941 'store':380 'str':447,458,459,479,694,697 'strategi':568 'stream':506,528,805 'streamingrespons':515,527 'structlog':554 'structur':551 'structuredtool':437 'structuredtool.from':482 'substitut':931 'success':953 'suit':616,881 'summar':326 'supervisor':299,309 'support':783 'system':20,43,129,317,789 'task':59,80,271,278,917 'tenac':721 'term':320 'test':607,823,874,877,879,937 'text/event-stream':533 'thorough':875 'thread':707 'throughout':144 'timeout':592,595,820 'token':323,862 'token-bas':322 'tool':94,256,263,431,455,481,485,488,493,499,562,780 'toolinput':444,497 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'trace':541,803,850 'track':287,332,334,546 'treat':926 'tri':464,749 'try/except':844 'ttl':575 'type':247,348,398,532,791 'typeddict':195 'unit':876 'unrel':82 'upfront':280 'usag':257,828 'use':21,44,49,75,134,258,301,425,553,794,833,861,894,911 'valid':110,560,936 'variabl':870 'vector':338,379,579 'vectorstor':384 'vectorstore.as':395 'vectorstoreretrievermemori':340 'verif':116 'version':891 'voyag':219,221,232,237,242,367,376,773,776 'voyage-cod':231 'voyage-fin':236 'voyage-law':241 'voyageai':357 'voyageaiembed':359,374 'wait':727,735,736 'window':325 'work':53 'worker':586 'workflow':61 'write':821","prices":[{"id":"b9d0fb8a-f929-40bb-a932-acc612dd0461","listingId":"a60a81ab-0b9e-4934-b4be-1f73c5ca4794","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:40:05.098Z"}],"sources":[{"listingId":"a60a81ab-0b9e-4934-b4be-1f73c5ca4794","source":"github","sourceId":"sickn33/antigravity-awesome-skills/llm-application-dev-langchain-agent","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/llm-application-dev-langchain-agent","isPrimary":false,"firstSeenAt":"2026-04-18T21:40:05.098Z","lastSeenAt":"2026-04-23T12:51:10.765Z"}],"details":{"listingId":"a60a81ab-0b9e-4934-b4be-1f73c5ca4794","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"llm-application-dev-langchain-agent","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34726,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-23T06:41:03Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"dd0f0bbbbb26d6182836de1ae938b3bb48423b17","skill_md_path":"skills/llm-application-dev-langchain-agent/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/llm-application-dev-langchain-agent"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"llm-application-dev-langchain-agent","description":"You are an expert LangChain agent developer specializing in production-grade AI systems using LangChain 0.1+ and LangGraph."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/llm-application-dev-langchain-agent"},"updatedAt":"2026-04-23T12:51:10.765Z"}}