LangChain 概述与生态
LangChain æ¦è¿°ä¸çæ
ææ¯å°é¦ 2026-08-09 13 é 读19åé第1课ï¼LangChain æ¦è¿°ä¸çæ
æ¬è¯¾ç®æ
å¦å®æ¬è¯¾åï¼ä½ åºè¯¥è½å¤ï¼
- è¯´æ¸ æ¥ä¸ºä»ä¹åªä¼è°ç¨å¤§æ¨¡å API è¿ä¸å¤ã
- ç¨ä¸å¥è¯è§£é LangChain æ¯ä»ä¹ã
- åºå LangChainãLangGraphãLangSmithãDeep Agents åå«è§£å³ä»ä¹é®é¢ã
- çè§£ LangChain 1.x 为ä»ä¹ä»¥
create_agent()ä½ä¸ºä¸»çº¿ã - çæ
langchainãlangchain-coreãæ¨¡å Provider å ã社åºéæå ç大è´åå·¥ã - é 好åç»è¯¾ç¨éè¦ç Python å¼åç¯å¢ã
1ã为ä»ä¹éè¦ LangChainï¼
1.1 ä»âè°ç¨æ¨¡åâå°âæå»º AI åºç¨â
å¾å¤åå¦åæ¥è§¦å¤§æ¨¡åæ¶ï¼åçç¬¬ä¸æ®µä»£ç é常æ¯è¿æ ·çï¼
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="your-model-name",
messages=[
{"role": "user", "content": "ä½ å¥½ï¼è¯·ä»ç»ä¸ä¸ä½ èªå·±"}
]
)
print(response.choices[0].message.content)
è¿æ®µä»£ç å½ç¶æ²¡æé®é¢ãå®å®æäºä¸ä»¶äºæ ï¼æä¸å¥è¯äº¤ç»æ¨¡åï¼åæ¿å模åçåçã
使¯ï¼çå®ä¸å¡ä¸ç AI åºç¨é叏䏿¢âé®ä¸å¥ãçä¸å¥âã
举ä¾1ï¼ä¼ä¸ç¥è¯åºé®ç婿
ç¨æ·é®ï¼
å ¬å¸ä»å¹´çæ¥éæ 忝ä»ä¹ï¼
妿åªè®©æ¨¡åç´æ¥åçï¼å®å¯è½æ ¹æ¬ä¸ç¥éä½ ä»¬å ¬å¸çå¶åº¦ï¼çè³ä¼ä¸æ¬æ£ç»å°ç¼ä¸ä¸ªçæ¡ã
ä¸ä¸ªçæ£å¯ç¨çç¥è¯åºå©æï¼è³å°è¦åå°ï¼
- ä» PDFãWordãç½é¡µææ°æ®åºä¸è¯»åä¼ä¸èµæã
- å¨èµæä¸æ£ç´¢ä¸é®é¢æç¸å ³çå 容ã
- ææ£ç´¢ç»æè¿åç¨æ·é®é¢ä¸èµ·äº¤ç»æ¨¡åã
- 让模ååºäºèµæåçï¼å¹¶ç»åºæ¥æºã
- å½èµæé没æçæ¡æ¶ï¼æç¡®åçâä¸ç¥éâï¼è䏿¯ç¼é ã
- è®°å½ç¨æ·ä¸ä¸æï¼æ¯æè¿ç»è¿½é®ã
- å¿ è¦æ¶è°ç¨å·¥å ·ï¼ä¾å¦æ¥æ°æ®åºãåéé®ä»¶ãå建工åã
é®é¢ï¼è¿äºè½åæ¯å¤§æ¨¡å天çå°±æçåï¼
åçï¼ä¸æ¯ãå¤§æ¨¡åæ é¿çè§£ãçæåæ¨çï¼ä½å®ä¸ä¼å¤©ç¶è®¿é®ä½ çæä»¶ãæ°æ®åºãæç´¢å¼ææä¸å¡ç³»ç»ï¼æ´ä¸ä¼å¤©ç¶ç®¡çç¶æãæ§å¶å·¥å ·æéåå¤ç夿æ§è¡æµç¨ã
æä»¥ï¼çæ£ç AI åºç¨ä¸æ¯âä¸ä¸ªæ¨¡åæ¥å£âï¼èæ¯ä¸å¥å´ç»æ¨¡åæå»ºçç³»ç»ã
1.2 åä¸ LLM çå ¸åå±é
æä»¬å¯ä»¥æå¤§æ¨¡åçè§£æä¸ä¸ªâç¥è¯å¾å¹¿ã表达è½åå¾å¼ºï¼ä½ä¸è½ç´æ¥å¨æåäºçå®ä¹ çâã
å®çå±é主è¦å æ¬ä»¥ä¸å ç±»ï¼
| å±é | è¡¨ç° | ä¸å¡åæ |
|---|---|---|
| ç¥è¯ææªæ¢æ¶é´ | ä¸ç¥éè®ç»æ°æ®ä¹åçæ°ä¿¡æ¯ | æ æ³åçææ°æ¿çã宿¶æ°é»ãåºåæ°æ®ç |
| ä¸ç¥éç§ææ°æ® | 没è§è¿ä¼ä¸å é¨ææ¡£åæ°æ®åº | æ æ³ç´æ¥åçå ¬å¸å¶åº¦ã客æ·ä¿¡æ¯çé®é¢ |
| å¯è½äº§çå¹»è§ | å¨ä¸ç¥éçæ¡æ¶ä»å¯è½çæçä¼¼åççå 容 | ä¸å¡å³çå¯è½è¢«è¯¯å¯¼ |
| æ æ³ç´æ¥æä½å¤é¨ç³»ç» | ä¸è½å¤©ç¶æ¥å¤©æ°ãè®¿é®æ°æ®åºãåé®ä»¶ | æ æ³å®æçå®ä»»å¡éç¯ |
| ä¸ä¸ææé | å¯¹è¯æææ¡£å¤ªé¿æ¶ï¼ä¿¡æ¯å¯è½ä¸¢å¤±æææ¬ä¸å | å¤è½®å¯¹è¯åé¿ææ¡£é®çä½éªåå·® |
| è¾åºä¸ç¨³å® | åä¸ä¸ªéæ±å¯è½æä¸åèªç¶è¯è¨è¡¨è¿° | ç¨åºé¾ä»¥ç¨³å®è§£æåæ¥å ¥ä¸æ¸¸ç³»ç» |
1.3 LangChain è§£å³ä»ä¹é®é¢ï¼
LangChain çæ ¸å¿ä½ç¨ä¸æ¯â让模ååèªæâï¼èæ¯è®©æ¨¡åå¯ä»¥è¢«æ´ç¨³å®å°æ¥å ¥çå®åºç¨ã
çç¹ï¼ä¸å模åååçè°ç¨æ¹å¼ãæ¶æ¯æ ¼å¼ãå·¥å ·è°ç¨æ ¼å¼ä¸å®å ¨ä¸æ ·ã
åè½ï¼æä¾ç¸å¯¹ç»ä¸ç模åãæ¶æ¯ãå·¥å ·çæ½è±¡ï¼è®©ä½ å¯ä»¥åå°åæ¢æ¨¡åæ¶çä¸å¡ä»£ç æ¹å¨ã
çç¹ï¼æ¨¡åä¸ç¥éä¼ä¸ç§æç¥è¯ï¼ä¹ä¸è½ç´æ¥è®¿é®å®æ¶æ°æ®ã
åè½ï¼éè¿ææ¡£å è½½ãæ£ç´¢ãå·¥å ·è°ç¨çè½åï¼æå¤é¨ç¥è¯åç³»ç»è½åæ¥ç»æ¨¡åã
çç¹ï¼æ¨¡ååªè½çæææ¬ï¼æ æ³å¯é 宿夿¥éª¤ä»»å¡ã
åè½ï¼éè¿ Agent 循ç¯ï¼è®©æ¨¡åæ ¹æ®ä»»å¡èªä¸»å³å®æ¯å¦è°ç¨å·¥å ·ãè°ç¨ä»ä¹å·¥å ·ã使¶ç»æã
çç¹ï¼çå®ç³»ç»éè¦è®°å¿ãæ¤æ ãéè¯ãæéä¸äººå·¥å®¡æ¹ã
åè½ï¼éè¿ä¸é´ä»¶ãç¶æä¸åºå±è¿è¡æ¶è½åï¼ä¸º Agent å¢å å·¥ç¨åæ§å¶ã
ä¸å¥è¯æ»ç»ï¼
LangChain çä»·å¼ï¼ä¸æ¯æ¿ä½ åä¸ä¸ª Promptï¼èæ¯æä¾ä¸å¥ææ¨¡åãå·¥å ·ãæ°æ®åæ§è¡é»è¾ç»è£ æ AI åºç¨çå¼åæ¡æ¶ã
2ãLangChain æ¯ä»ä¹ï¼
2.1 宿¹å®ä½
å½å LangChain ç宿¹å®ä½æ¯ï¼æä¾ create_agentï¼ç¨ä¸ä¸ªæå°åä½é«åº¦å¯é
ç½®ç Agent Harnessï¼æºè½ä½å¤å£³ï¼ï¼ææ¨¡åãå·¥å
·ãæç¤ºè¯åä¸é´ä»¶ç»åæç¬¦åä¸å¡éè¦çæºè½ä½ã docs.langchain
æ ¸å¿å ¬å¼ï¼
[
\text{Agent} = \text{Model} + \text{Harness}
]
å ¶ä¸ï¼
- Modelï¼è´è´£çè§£ç¨æ·é®é¢ãè§åãéæ©å·¥å ·ãçææç»åçã
- Harnessï¼å´ç»æ¨¡åè¿è¡ç䏿´å¥å¤å£³ï¼å æ¬ PromptãToolsãMiddlewareãç¶æåæ§è¡å¾ªç¯çã
å½äººçï¼
模ååâ大èâï¼è´è´£çè§£åå³çï¼Harness åâ身ä½åå·¥ä½å¶åº¦âï¼å³å®å®è½ç¨ä»ä¹å·¥å ·ãå¦ä½è®°å¿ãéå°æææä½æ¯å¦è¦å®¡æ¹ãåçä¸åæ ¼æ¶å¦ä½å¤çã
2.2 ä»ä¹æ¯ Agentï¼
Agent å¯ä»¥çè§£ä¸ºï¼æ¨¡å䏿¯åªåç䏿¬¡ï¼èæ¯å¨ä¸ä¸ªå¾ªç¯ä¸å³å®æ¯å¦è°ç¨å·¥å ·ï¼ç´å°ä»»å¡å®æã docs.langchain
ä¸ä¸ªæåºç¡ç Agent æ§è¡è¿ç¨å¦ä¸ï¼
ç¨æ·æé®
â
模åçè§£é®é¢
â
æ¯å¦éè¦å·¥å
·ï¼
ââ ä¸éè¦ â ç´æ¥åç
ââ éè¦ â 鿩工å
·å¹¶çæåæ°
â
æ§è¡å·¥å
·
â
å·¥å
·ç»æè¿å模å
â
模åç»§ç»å¤æ
â
çææç»åç
举ä¾2ï¼æ¥è¯¢å¤©æ°
ç¨æ·è¯´ï¼
å¸®ææ¥ä¸ä¸å京æå¤©ç天æ°ï¼å¹¶æéææ¯å¦å¸¦ä¼ã
æ®é模åå¯è½ä¼æ ¹æ®è®ç»ç¥è¯çæµå¤©æ°ã
Agent åå¯ä»¥ï¼
- 夿âå¤©æ°æ¯å®æ¶ä¿¡æ¯ï¼éè¦æ¥å·¥å ·âã
- è°ç¨å¤©æ°å·¥å ·ï¼åæ°ä¸ºâå京ãæå¤©âã
- è·åå¤©æ°æ°æ®ã
- æ ¹æ®é鍿¦ççæâ建议带ä¼âæâæ é带ä¼âçåçã
éä¿çè§£ï¼
LLM è´è´£âæ³âï¼Tool è´è´£âåâï¼Agent è´è´£æâæ³âåâåâ循ç¯èµ·æ¥ã
2.3 LangChain çæ ¸å¿è½å
LangChain çéè¦è½åå¯ä»¥å è®°æä¸é¢è¿å¼ å¾ï¼
ââââââââââââââââ
â Model â
â æ¨¡åè°ç¨ â
ââââââââ¬ââââââââ
â
ââââââââââââââââââââ¼âââââââââââââââââââ
â â â
Messages / Prompt Tools Structured Output
æ¶æ¯ä¸æç¤ºè¯ å·¥å
· ç»æåè¾åº
â â â
ââââââââââââââââââââ¼âââââââââââââââââââ
â
create_agent()
â
Middleware / Memory / State
ä¸é´ä»¶ / è®°å¿ / ç¶æç®¡ç
â
å¯è¿è¡ç AI åºç¨
| è½å | è§£å³çé®é¢ | åç»å¯¹åºç« è |
|---|---|---|
| æ¨¡åæ½è±¡ | ç¨ç¸å¯¹ç»ä¸çæ¥å£æ¥å ¥ä¸å模ååå | 第 2 课 |
| æ¶æ¯ä¸æç¤ºè¯ | å®ä¹æ¨¡åè§è²ãè¾å ¥æ ¼å¼å对è¯åå² | 第 3 课 |
| ç»æåè¾åº | 让模åè¿åå¯è¢«ç¨åºç¨³å®è¯»åçæ°æ® | 第 4 课 |
| å·¥å · | 让模åè°ç¨æç´¢ãæ°æ®åºãæä»¶ãä¸å¡æ¥å£ | 第 5 课 |
| Agent | 让模åå¨å·¥å ·è°ç¨å¾ªç¯ä¸å®æä»»å¡ | 第 6 课 |
| ä¸é´ä»¶ä¸è®°å¿ | å®ç°æ¤æ ãéè¯ãè·¯ç±ã对è¯ç¶æç | 第 7 课 |
| RAG è½å | è¿æ¥ä¼ä¸ææ¡£ãåéåºä¸æ£ç´¢é¾è·¯ | 第 8â13 课 |
注æï¼LangChain 䏿¯åªæ Agentãä½ å½ç¶å¯ä»¥åªç¨å®ç模åè°ç¨ãæ¶æ¯ãæç¤ºè¯ãææ¡£å¤çæç»æåè¾åºè½åãåªæ¯ä» LangChain 1.x å¼å§ï¼å®æ¹å° Agent ä½ä¸ºä¸»è¦å¼å主线ãcreate_agent() æ¯å½åæå»º Agent çæ åå
¥å£ã docs.langchain
3ãLangChain çæå ¨æ¯
3.1 åå¤§æ ¸å¿äº§å
LangChain çæä¸æ¯åªæä¸ä¸ª Python å ï¼èæ¯ä¸ç»é¢åä¸å屿¬¡é®é¢ç产åãåå¦è æå®¹ææ··æ·çï¼å°±æ¯ LangChainãLangGraphãLangSmith å Deep Agentsã
| 产å | å®ä½ | æ ¸å¿èè´£ | ä»ä¹æ¶åä½¿ç¨ |
|---|---|---|---|
| LangChain | Agent Frameworkï¼æºè½ä½å¼åæ¡æ¶ | 模åãæ¶æ¯ãå·¥å ·ãAgent 循ç¯ãä¸é´ä»¶çé«å±æ½è±¡ | 大夿°æ å AgentãRAGãå·¥å ·è°ç¨åºç¨ |
| LangGraph | Agent Runtimeï¼æºè½ä½è¿è¡æ¶ä¸ç¼ææ¡æ¶ | å¾ç¼æãæä¹ åãæµå¼ã人æºååãå¤æç¶ææµè½¬ | 夿ãé¿æ¶é´è¿è¡ã强æµç¨æ§å¶ç Agent |
| LangSmith | å¯è§æµä¸è¯ä¼°å¹³å° | Traceãè°è¯ãè¯æµãæç¤ºè¯ç®¡çãé¨ç½²ç¸å ³è½å | è°è¯ãè¯ä¼°ãçæ§åç产è¿ä»£ |
| Deep Agents | å¼ç®±å³ç¨ç Agent Harness | è§åãåæºè½ä½ãèææä»¶ç³»ç»ãä¸ä¸æç®¡çç | é¿ä»»å¡ã夿¥éª¤ä»»å¡ãéè¦èªä¸»è§åçåºæ¯ |
宿¹å° LangChain å®ä¹ä¸ºæä¾æ¨¡åãå·¥å ·ä¸ Agent Loop æ½è±¡çæ¡æ¶ï¼LangGraph 忝é¢åé¿æ¶é´ãæç¶æ Agent çåºå±ç¼æè¿è¡æ¶ï¼Deep Agents 建ç«å¨ LangGraph ä¹ä¸ï¼å¹¶è¡¥å è§åãåæºè½ä½ä¸æä»¶ç³»ç»çæ´âå¼ç®±å³ç¨âçè½åã docs.langchain
3.2 ç¨âçæ¿åâçè§£åè å ³ç³»
çæ´»åç±»æ¯ï¼
- LangChainï¼åè£ ä¿®å·¥å ·ç®±ãæä¾çµé»ãæ³æãèºä¸ååæ åç»ä»¶ï¼æ¹ä¾¿ä½ å¿«éç»è£ ä¸ä¸ªæ¿é´ã
- LangGraphï¼åæ¿å±çç»æä¸ç®¡çº¿è®¾è®¡å¾ã宿§å¶å¤ææµç¨ãç¶ææµè½¬ãæåæ¢å¤ä¸äººå·¥ä»å ¥ã
- Deep Agentsï¼åç²¾è£ æ¿æ¹æ¡ã卿¿ãæ¶çº³ãè§åååºç¡è®¾æ½å·²ç»é 好ï¼éåå¿«éå ¥ä½ã
- LangSmithï¼åå·¥ç¨ççåè´¨éæ£æµå¹³å°ãä½ å¯ä»¥çå°åªéåºé®é¢ãåªä¸æ¥æ ¢ãåªä¸ªåçè´¨éä¸å¥½ã
å ³ç³»å¯ä»¥ç®å为ï¼
LangSmithï¼è§æµãè°è¯ãè¯ä¼°ãé¨ç½²
â
LangGraphï¼å¤ææµç¨ç¼æãæä¹
åã人工ä»å
¥
â
LangChainï¼æ¨¡åãå·¥å
·ãæç¤ºè¯ãAgent æ½è±¡
â
åç§æ¨¡åãåéåºãæ°æ®åºãæç´¢ä¸ä¸å¡ç³»ç»
注æï¼LangChain ç Agent æå»ºå¨ LangGraph ä¹ä¸ï¼å æ¤å¯ä»¥è·å¾æä¹ åãæµå¼è¾åºå人工审æ¹çåºå±è½åï¼ä½æ¯åå ¥é¨æ¶ï¼ä½ ä¸éè¦å å¦ä¼ LangGraphï¼ç´æ¥ä½¿ç¨ LangChain å³å¯ã docs.langchain
4ãLangChain è½åä»ä¹ï¼
4.1 常è§åºç¨åºæ¯
LangChain æå¸¸è§çåºç¨æ¹åå æ¬ï¼
- RAG ç¥è¯åºé®çï¼è®©æ¨¡ååºäºä¼ä¸å¶åº¦ãäº§åææ¡£ãæä½æååçé®é¢ã
- æºè½å®¢æï¼æ¥è¯¢è®¢åãç©æµã产åä¿¡æ¯ï¼å¿ è¦æ¶å建工åã
- æ°æ®åæå©æï¼è°ç¨æ°æ®åºãæ§è¡ä»£ç ãçæåææ¥åã
- èªå¨ååå ¬ï¼è¯»åé®ä»¶ãæ´çææ¡£ãçæä¼è®®çºªè¦ãåå ¥ä¸å¡ç³»ç»ã
- ç ç©¶ä¸æç´¢å©æï¼æç´¢ç½é¡µã读åèµæãå½çº³ç»è®ºã
- å¤è½®å¯¹è¯åºç¨ï¼æ¯æç¨æ·ä¸ä¸æã个æ§åä¿¡æ¯åè®°å¿ã
- 夿¨¡æåºç¨ï¼ç»åææ¬ãå¾çãé³é¢çè¾å ¥è½åï¼å ·ä½åå³äºæ¨¡å Provider çæ¯ææ åµã
4.2 RAG æ¯ä»ä¹ï¼
RAG æ¯ Retrieval-Augmented Generation ç缩åï¼ä¸æé常å«âæ£ç´¢å¢å¼ºçæâã
çç¹ï¼æ¨¡åå¹¶ä¸ç¥éä½ ä»¬å ¬å¸çç§æèµæï¼è¿å¯è½æ ¹æ®æ¨¡ç³è®°å¿ç¼é çæ¡ã
åè½ï¼å ä»ç¥è¯åºä¸æ£ç´¢ç¸å ³èµæï¼å让模ååºäºèµæçæçæ¡ã
RAG çåºæ¬æµç¨ï¼
ä¼ä¸ææ¡£
â
ææ¡£å è½½
â
ææ¬åå
â
åéåå¹¶åå
¥åéåº
â
ç¨æ·æé®
â
æ£ç´¢ç¸å
³ææ¡£ç段
â
çæ®µ + ç¨æ·é®é¢ â 大模å
â
çæå¸¦ä¾æ®çæç»åç
çæ´»åç±»æ¯ï¼
RAG å°±åä¸åºå¼å·èè¯ã模åä¸ååªåèªå·±çè®°å¿çé¢ï¼èæ¯å å»èµæåºéç¿»å°ç¸å ³å 容ï¼åç»åé¢ç®ç»ç»çæ¡ã
æ¬è¯¾ç¨ååæ®µä¼å®æ´å®ç°è¿æ¡é¾è·¯ï¼å¹¶æç»æâæ£ç´¢ç¥è¯åºâå°è£ æ Agent å¯ä»¥èªä¸»è°ç¨çå·¥å ·ã
5ãLangChain 1.x ç主线åå
5.1 为ä»ä¹è¦ç¹å«å¼ºè°çæ¬ï¼
ä½ å¨ç½ä¸æç´¢ LangChain æç¨æ¶ï¼å¾å®¹æçå°ä¸é¢è¿äºæ§åæ³ï¼
from langchain.chains import LLMChain
from langchain.agents import initialize_agent
from langgraph.prebuilt import create_react_agent
è¿äºåæ³å¯è½æ¥èªä¸ååå²çæ¬ï¼é¨å API å·²ç»è¿ç§»ãå¼ç¨ï¼æè¢«æ´ç»ä¸çå ¥å£æ¿ä»£ã
å½å LangChain 1.x çéè¦æ¹åæ¯ï¼
- 使ç¨
create_agent()ä½ä¸ºå建 Agent çæ åæ¹å¼ã - 使ç¨ç»ä¸ç
content_blocks表达跨模å Provider çå 容åã - ç²¾ç®
langchainå½å空é´ï¼å°è¾å¤æ§åè½è¿ç§»å°langchain-classicã docs.langchain
5.2 æ°æ§ä¸»çº¿å¯¹æ¯
| 维度 | æ§ç 0.x å¸¸è§æè·¯ | LangChain 1.x æ¨è主线 |
|---|---|---|
| Agent å建 | å¤ç§å ¥å£å¹¶åï¼å®¹ææ··æ· | create_agent() ç»ä¸å
¥å£ |
| æ ¸å¿ç»ç»æ¹å¼ | ChainsãLCELãRunnable 常被ä½ä¸ºä¸»çº¿ | ModelãToolsãAgentãMiddleware 为主线 |
| å å½åç©ºé´ | å 容è¾å¤ãåå²å ¼å®¹è´æ è¾é | èç¦ Agent åºç¡è½å |
| æ§è½åå¤ç | 大é API æ··å¨ä¸»å ä¸ | é¨åæ§åè½è¿è³ langchain-classic |
| å ¥é¨è·¯çº¿ | å å¦é¾å¼ç»å | å 妿¨¡åãå·¥å ·ãAgent å RAG |
注æï¼è¿ä¸ä»£è¡¨æ§çç¥è¯å
¨é¨å¤±æãLCELãRunnable çåºå±æ¦å¿µå¨é¨å项ç®ååå²ä»£ç ä¸ä»ç¶ä¼éå°ï¼ä½å¯¹äºæ¬è¯¾ç¨åæ°é¡¹ç®ï¼å±ä»¬ä»¥ LangChain 1.x ç create_agent() 主线å¦ä¹ å³å¯ã docs.langchain
6ãLangChain å ç»æ
6.1 为ä»ä¹å¯¼å ¥è·¯å¾æ»æ¯ä¸åï¼
åå¦è 叏叏伿ä¸ä¸ªçé®ï¼
为ä»ä¹æçç±»ä» langchain 导å
¥ï¼æçä» langchain_core 导å
¥ï¼æçåè¦å®è£
langchain-openaiï¼
åå æ¯ LangChain éç¨äºâæ ¸å¿æ½è±¡ + Provider éæ + ç¤¾åºæ©å±âçå ç»æã
| å | 主è¦ä½ç¨ | ä½ å¯ä»¥æä¹çè§£ |
|---|---|---|
langchain | é«å± Agent APIãç»ä¸å ¥å£ä¸å¸¸ç¨è½å | ä¸»å·¥å ·ç®± |
langchain-core | æ¶æ¯ãæ¨¡åæ¥å£ãå·¥å ·æ½è±¡çåºç¡åè®® | å°åºåæ¥å£è§è |
langchain-openai | OpenAI 模åä¸ Embedding éæ | OpenAI ä¸ç¨éé å¨ |
langchain-anthropic | Anthropic 模åéæ | Anthropic ä¸ç¨éé å¨ |
langchain-ollama | Ollama æ¬å°æ¨¡åéæ | æ¬å°æ¨¡åéé å¨ |
langchain-community | 社åºç»´æ¤çç¬¬ä¸æ¹éæ | æ©å±æä»¶ä»åº |
langchain-text-splitters | ææ¬ååå¨ | RAG ææ¡£ååå·¥å ·ç®± |
langchain-classic | æ§çé¾ãæ£ç´¢å¨çåå²è½å | å ¼å®¹æ§é¡¹ç®çå·¥å ·ç®± |
LangChain 1.x ä¸ï¼langchain å½å空é´éç¹æ´é² Agentãæ¶æ¯ãå·¥å
·ã模ååå§åå Embedding åå§åçè½åï¼å
¶ä¸ä¸å°è½åæ¬è´¨ä¸æ¥èª langchain-core ç鿰坼åºï¼ç®çæ¯è®©å¸¸ç¨å¯¼å
¥æ´éä¸ã docs.langchain
6.2 常è§å¯¼å ¥ç¤ºä¾
# å建 Agent
from langchain.agents import create_agent
# æ¶æ¯å¯¹è±¡
from langchain.messages import HumanMessage, AIMessage, SystemMessage
# èªå®ä¹å·¥å
·
from langchain.tools import tool
# ç»ä¸åå§åè天模å
from langchain.chat_models import init_chat_model
# åå§å Embedding 模å
from langchain.embeddings import init_embeddings
说æï¼å¨åç»è¯¾ç¨éï¼ä½ ä¹ä¼çå°æäºå¯¹è±¡ç´æ¥ä» langchain_core æ Provider å
导å
¥ãè¿æ¯æ£å¸¸ç°è±¡ã
ä¾å¦ï¼
# Provider ä¸ç¨æ¨¡åç±»
from langchain_openai import ChatOpenAI
# æ´åºå±çæ¶æ¯å¯¹è±¡æ¥æº
from langchain_core.messages import HumanMessage
建议ï¼åå¼å§ä¼å è·é宿¹å½åææ¡£ä¸æ¬è¯¾ç¨ä»£ç ãä¸è¦å 为ç½ä¸æç¯æ§æç¨çå¯¼å ¥è·¯å¾ä¸åï¼å°±æ··çå¤å¶ä½¿ç¨ã
7ãå¼åç¯å¢åå¤
7.1 Python ç¯å¢å»ºè®®
建议为æ¬è¯¾ç¨åç¬å建ä¸ä¸ªé¡¹ç®åèæç¯å¢ï¼é¿å ä¸å项ç®çä¾èµçæ¬äºç¸æ±¡æã
常è§ç¯å¢ç®¡çæ¹å¼å¦ä¸ï¼
| æ¹å¼ | ç¹ç¹ | 建议 |
|---|---|---|
venv | Python èªå¸¦ãç®åéç¨ | åå¦è å¯ä»¥ç´æ¥ä½¿ç¨ |
conda | ç¯å¢é离è¾å®æ´ï¼éåç§å¦è®¡ç®åºæ¯ | å·²å¨ä½¿ç¨ Anaconda çåå¦å¯ç»§ç»ä½¿ç¨ |
uv | ä¾èµç®¡çåå®è£ é度快 | å¸æä½¿ç¨è¾æ°å·¥å ·é¾çåå¦å¯ä»¥éæ© |
å
¨å± pip install | ä¸æå¿«ï¼ä½å®¹ææ±¡æç¯å¢ | ä¸å»ºè®®ç¨äºæ£å¼é¡¹ç® |
建议ï¼å¦æä½ æ¯åå¦è
ï¼éæ© venv + pip å°±å¤äºï¼å¦æä½ å·²ç»å¨ä½¿ç¨ uvï¼åç»å¯ä»¥éç¨ uv 管ç项ç®ä¾èµã
7.2 ä½¿ç¨ venv å建ç¯å¢
举ä¾3ï¼å建课ç¨èæç¯å¢
# å建项ç®ç®å½
mkdir langchain_course
# è¿å
¥é¡¹ç®ç®å½
cd langchain_course
# å建èæç¯å¢
python -m venv .venv
æ¿æ´»èæç¯å¢ï¼
# macOS / Linux
source .venv/bin/activate
# Windows PowerShell
.venv\Scripts\Activate.ps1
æ¿æ´»æååï¼ç»ç«¯åé常ä¼åºç°ç±»ä¼¼ .venv çç¯å¢æ è¯ã
7.3 å®è£ åºç¡ä¾èµ
æ¬è¯¾å å®è£ æåºç¡çä¸ç»ä¾èµï¼
pip install -U langchain langchain-openai python-dotenv
说æï¼
langchainï¼LangChain 主å ãlangchain-openaiï¼ç¨äºæ¥å ¥ OpenAI å ¼å®¹æ¨¡åæå¡ãpython-dotenvï¼ç¨äºä».envæä»¶è¯»å API Key çç¯å¢åéã
å¦æä½ ä½¿ç¨å
¶ä»æ¨¡å Providerï¼éè¦é¢å¤å®è£
ç¸åºçéæå
ãä¾å¦ï¼å®æ¹ææ¡£å±ç¤ºäºéè¿å®è£
ä¸å Provider éæå
ï¼å¹¶ç¨ provider:model 形弿宿¨¡åçæ¹å¼æ¥åæ¢æ¨¡åæ¥å
¥ã docs.langchain
注æï¼æ¨¡å Provider å
忍¡ååç§°è¦é
å¥ãå®è£
äº langchain-openaiï¼å¹¶ä¸ä»£è¡¨ä½ å¯ä»¥ç´æ¥è°ç¨ä»»æååçæ¨¡åã
7.4 éªè¯å®è£
举ä¾4ï¼æ£æ¥ LangChain æ¯å¦å®è£ æå
æ°å»º check_env.pyï¼
import langchain
print("LangChain å®è£
æå")
print("å½å LangChain çæ¬ï¼", langchain.__version__)
è¿è¡ï¼
python check_env.py
è¾åºå¦ä¸ï¼
LangChain å®è£
æå
å½å LangChain çæ¬ï¼1.x.x
注æï¼å ·ä½çæ¬å·ä¼éçä½ å®è£ æ¶é´ä¸åèååï¼åªè¦è½æ£å¸¸è¾åºçæ¬å·ï¼å°±è¯´æåºç¡å®è£ æåã
7.5 é
ç½® .env æä»¶
åç»è°ç¨æ¨¡åæ¶ï¼ä¸è¦æ API Key ç´æ¥åè¿ Python æä»¶ï¼æ´ä¸è¦æäº¤å° Git ä»åºã
建议å¨é¡¹ç®æ ¹ç®å½æ°å»º .env æä»¶ï¼
OPENAI_API_KEY=ä½ ç_API_KEY
OPENAI_BASE_URL=ä½ çæ¨¡åæå¡å°å
åæ°å»º .gitignore æä»¶ï¼
.env
.venv/
__pycache__/
注æï¼
.envåªä¿å卿¬å°ï¼ä¸è¦ä¸ä¼ å ¬å¼ä»åºã- ä¸å模åååçç¯å¢åéåç§°å¯è½ä¸åã
OPENAI_BASE_URLæ¯å¦éè¦é ç½®ï¼åå³äºä½ 使ç¨çæ¯å®æ¹æå¡è¿æ¯ OpenAI å ¼å®¹æå¡ã- æ¬è¯¾ç¨å¨ç¬¬ 2 课ä¼è¯¦ç»è®²è§£æ¨¡ååå§åãç¯å¢åé读ååå¤ Provider æ¥å ¥ã
8ãä¸ä¸ªæå° Agent é¢è§
è½ç¶ Agent ä¼å¨ç¬¬ 6 课系ç»è®²è§£ï¼ä½è¿éå çä¸ç¼ LangChain 1.x çæ ¸å¿ä½éªã
举ä¾5ï¼æå°å·¥å ·è°ç¨ Agent
from langchain.agents import create_agent
def get_weather(city: str) -> str:
"""æ¥è¯¢æå®åå¸ç天æ°ã"""
return f"{city}ä»å¤©æ´å¤©ï¼æ°æ¸© 25âã"
agent = create_agent(
model="openai:your-model-name",
tools=[get_weather],
system_prompt="ä½ æ¯ä¸ä¸ªä¹äºå©äººç天æ°å©æã"
)
result = agent.invoke(
{
"messages": [
{
"role": "user",
"content": "åäº¬å¤©æ°æä¹æ ·ï¼"
}
]
}
)
print(result["messages"][-1].content)
è¾åºå¦ä¸ï¼
å京ä»å¤©æ´å¤©ï¼æ°æ¸© 25âã
说æï¼è¿æ®µä»£ç å ä¸è¦æ±ä½ å®å ¨çæãä½ ç°å¨åªéè¦æä½åä»¶äºï¼
modelï¼æå® Agent 使ç¨åªä¸ªå¤§æ¨¡åãtoolsï¼æ Python 彿°äº¤ç» Agent 使ç¨ãsystem_promptï¼å®ä¹ Agent çè§è²åè¡ä¸ºè§åãinvoke()ï¼è¾å ¥ç¨æ·æ¶æ¯å¹¶è¿è¡ Agentã
å½ç¨æ·è¯¢é®å¤©æ°æ¶ï¼æ¨¡åä¼è¯å«å°èªå·±éè¦è°ç¨ get_weather()ï¼å·¥å
·è¿åç»æåï¼æ¨¡ååç»ç»æç»è¯è¨åçãè¿ä¸ªâ模åæè â è°ç¨å·¥å
· â è·åç»æ â ååçâçè¿ç¨ï¼å°±æ¯ Agent çåºæ¬å·¥ä½æ¹å¼ã docs.langchain
注æï¼ç¤ºä¾ä¸ç天æ°ç»ææ¯æ¬å°å½æ°è¿åçæ¨¡ææ°æ®ï¼ä¸æ¯çå®å¤©æ°ãè¦æ¥è¯¢çå®å¤©æ°ï¼éè¦æ¥å ¥çå®å¤©æ° API ææç´¢å·¥å ·ã
9ãæ¬è¯¾ç¨æç»é¡¹ç®é¢è§
æ¬è¯¾ç¨ä¸æ¯ä¸ºäºè®©å¤§å®¶è APIï¼èæ¯ä¸ºäºæç»å®æä¸ä¸ªä¼ä¸ç¥è¯åº RAG Agentã
ç¨æ·å¯è½ä¼è¿æ ·æé®ï¼
åå·¥åºå·®ä½å®¿è´¹çæ¥éä¸éæ¯å¤å°ï¼
æç»ç³»ç»çå¤çè¿ç¨å¦ä¸ï¼
ç¨æ·é®é¢
â
RAG Agent 夿ï¼éè¦æ¥è¯¢ä¼ä¸ç¥è¯åº
â
è°ç¨ retrieve_knowledge å·¥å
·
â
ä»åéåºæ£ç´¢âå·®æ
æ¥éå¶åº¦âç¸å
³ç段
â
å¿
è¦æ¶éææ£ç´¢ç»æ
â
模ååºäºæ£ç´¢å
容ç»ç»çæ¡
â
è¿åï¼çæ¡ + æ¥æºç段 + 置信度
æç»äº¤ä»çç³»ç»ä¼å ·å¤ï¼
- æ¯æå è½½ä¼ä¸ PDFãWordãTXT çç¥è¯åºã
- æ¯æææ¡£ååãEmbedding åéåä¸ç¸ä¼¼åº¦æ£ç´¢ã
- æ¯æ Agent æéè°ç¨æ£ç´¢å·¥å ·ã
- æ¯æå¤è½®é®çè®°å¿ã
- æ¯æç¥è¯åºå¤é®é¢æçï¼éä½å¹»è§ã
- æ¯æçæ¡æ¥æºè¿½æº¯ä¸ç½®ä¿¡åº¦è¾åºã
- æ¯æææè¯ãè¶æé®é¢çåºç¡æ¤æ ã
è¿å°±æ¯ä¸ºä»ä¹å颿¯ä¸è¯¾é½ä¸æ¯å¤ç«çï¼æ¨¡åãæç¤ºè¯ãç»æåè¾åºãå·¥å ·ãAgentãRAG åè®°å¿ï¼æåé½ä¼ç»è£ å°åä¸ä¸ªé¡¹ç®ä¸ã
10ã常è§è¯¯åº
é误举ä¾1 ?ï¼LangChain å°±æ¯ä¸ä¸ªæ¨¡å
âæå·²ç»ä¼è°ç¨æä¸ªæ¨¡å API äºï¼æä»¥ä¸éè¦ LangChainãâ
é®é¢ï¼è°ç¨æ¨¡å API åªæ¯ AI åºç¨çä¸å°é¨åãçå®åºç¨è¿éè¦å·¥å ·ãç¶æãæ°æ®ãæ£ç´¢ãè¾åºçº¦æãå®å ¨æ§å¶åè§æµè½åã
æ£ç¡®çè§£ ?ï¼
模å API è§£å³âæä¹è°ç¨æ¨¡åâï¼
LangChain æ´å
³æ³¨âæä¹ææ¨¡åæ¥å
¥åºç¨ç³»ç»âã
é误举ä¾2 ?ï¼ä¸å¼å§å°±å¦ä¹ ææçæäº§å
âæè¦åæ¶å¦ä¹ LangChainãLangGraphãLangSmithãDeep Agentsãâ
é®é¢ï¼åè è§£å³çé®é¢ä¸åï¼åæ¶å¦ä¹ ä¼é ææ¦å¿µæ··ä¹±ã
æ£ç¡®åæ³ ?ï¼
å
å¦ LangChain 主线ï¼
模å â æ¶æ¯/æç¤ºè¯ â ç»æåè¾åº â å·¥å
· â Agent â RAG
éå°å¤ææµç¨ï¼åå¦ LangGraphï¼
éè¦è§æµåè¯ä¼°ï¼åæ¥å
¥ LangSmithï¼
éè¦é¿ä»»å¡èªä¸»è§åï¼åèè Deep Agentsã
é误举ä¾3 ?ï¼ç §æ¬æ§ç代ç
from langchain.chains import LLMChain
é®é¢ï¼å¾å¤ç½ç»æç¨åºäº LangChain 0.xï¼ä¸ä¸å®éç¨äºå½å 1.x 主线ã
æ£ç¡®åæ³ ?ï¼
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
说æï¼éå°æ§ API æ¶ï¼å
确认æç¨å¯¹åºç LangChain çæ¬ï¼æ°é¡¹ç®ä¼å
åèå½å宿¹ææ¡£å 1.x æ¨èåæ³ãLangChain 1.x å·²å°é¨ååå²åè½æ¾å
¥ langchain-classicï¼å¹¶å° create_agent() ä½ä¸ºæ å Agent å
¥å£ã docs.langchain
11ãå°ç»
æ¬è¯¾æä»¬å»ºç«äº LangChain çå ¨å±è®¤ç¥ï¼
LangChain = é¢å AI Agent åºç¨å¼åçæ¡æ¶ï¼æ ¸å¿æ¯æ ModelãPromptãToolsãMiddleware çè½åç»åæå¯è¿è¡ç Agentã
ä½ éè¦è®°ä½ä»¥ä¸å ç¹ï¼
- å¤§æ¨¡åæ¬èº«ä¸è½ç´æ¥è§£å³ç§æç¥è¯ã宿¶æ°æ®ãå·¥å ·è°ç¨å夿æµç¨æ§å¶é®é¢ã
- LangChain çæ ¸å¿å ¬å¼æ¯ï¼
[
\text{Agent} = \text{Model} + \text{Harness}
]
- LangChain è´è´£é«å± Agent å¼åï¼LangGraph è´è´£å¤æç¼æä¸è¿è¡æ¶ï¼LangSmith è´è´£è§æµä¸è¯ä¼°ï¼Deep Agents æä¾æ´å¼ç®±å³ç¨ç夿 Agent è½åã
- æ¬è¯¾ç¨ä»¥ LangChain 1.x 为主线ï¼éç¹å¦ä¹
create_agent()ã - ä¸è¦è¯å¾è®°ä½ææ APIï¼å ææ¡æ¨¡åãæ¶æ¯ãå·¥å ·ãAgent ä¸ RAG è¿æ¡ä¸»çº¿ã
- æç»ç®æ æ¯å®æä¸ä¸ªä¼ä¸ç¥è¯åº RAG Agentã
课åç»ä¹
- ç¨èªå·±çè¯è§£éï¼ä¸ºä»ä¹å¤§æ¨¡åä¸è½ç´æ¥æ¿ä»£ä¼ä¸ç¥è¯åºé®çç³»ç»ï¼
- åå«ç¨ä¸å¥è¯è¯´æ LangChainãLangGraphãLangSmithãDeep Agents çå®ä½ã
- å建ä¸ä¸ª Python èæç¯å¢ï¼å®æ
langchainçå®è£ ï¼å¹¶è¿è¡check_env.pyã - æèï¼å¦æè¦åâæºè½å®¢æç³»ç»âï¼é¤äºæ¨¡å以å¤ï¼ä½ 认为è¿éè¦åªäºå·¥å ·æå¤é¨ç³»ç»ï¼
- é¢ä¹ 第 2 è¯¾ï¼æ¨¡åçå建ä¸è°ç¨ãæèä¸ä¸ï¼å¦ææªæ¥è¦ä»ä¸ä¸ªæ¨¡å Provider 忢å°å¦ä¸ä¸ªï¼ä¸å¡ä»£ç åºè¯¥ææ ·å°½éå°æ¹ï¼
Aitishiku.com