大模型Function Calling实战:让Agent拥有工具调用能力
大模åFunction Calling宿ï¼è®©Agentæ¥æå·¥å ·è°ç¨è½å
å¼è¨
AI Agent çæ ¸å¿ä»·å¼å¨äºè½å¤èªä¸»å®æå¤æä»»å¡ãç¶èï¼å¤§è¯è¨æ¨¡åï¼LLMï¼æ¬è´¨ä¸åªè½çæææ¬ï¼æ æ³ç´æ¥è·å宿¶æ°æ®ãæ§è¡ä»£ç ææä½å¤é¨ç³»ç»ãFunction Callingï¼å½æ°è°ç¨ï¼æºå¶çåºç°ï¼æ°å¥½å¼¥è¡¥äºè¿ä¸çæ¿ââå®è®©æ¨¡åè½å¤"çè§£"使¶éè¦è°ç¨å¤é¨å·¥å ·ãè°ç¨åªä¸ªå·¥å ·ãä¼ å ¥ä»ä¹åæ°ï¼å¹¶å°æ§è¡ç»æåä¼ ç»æ¨¡åç»§ç»æ¨çãæ¬æå°æ·±å ¥è®²è§£ OpenAI Function Calling ç宿´å®ææµç¨ï¼å¸®å©ä½ æå»ºå ·å¤å·¥å ·è°ç¨è½åçæºè½ Agentã
ä¸ãä»ä¹æ¯ Function Calling
Function Calling æ¯ OpenAI å¨ GPT-3.5-turbo å GPT-4 ä¸å¼å ¥çä¸é¡¹è½åãå®å 许å¼åè å¨ API 请æ±ä¸é¢å å®ä¹ä¸ç»å¯è°ç¨å½æ°ï¼æ¨¡åæ ¹æ®ç¨æ·è¾å ¥èªä¸»å¤ææ¯å¦éè¦è°ç¨å ¶ä¸æä¸ªå½æ°ï¼å¹¶çæç¬¦å彿°ç¾åç JSON åæ°ã
ä¸ä¼ ç»çæç¤ºè¯å·¥ç¨ï¼Prompt Engineeringï¼ç¸æ¯ï¼Function Calling å ·æä¸ä¸ªæ¾èä¼å¿ï¼
- ç»æåè¾åºï¼æ¨¡åçæä¸¥æ ¼ç JSON æ ¼å¼åæ°ï¼æ éä»èªç±ææ¬ä¸è§£æ
- ç±»åå®å ¨ï¼éè¿ JSON Schema å®ä¹åæ°ç±»åï¼éä½è§£æé误ç
- å³çéæï¼æ¨¡åæ¾å¼å°éæ©"ç´æ¥åç"æ"è°ç¨å·¥å ·"ï¼å³çè¿ç¨å¯è¿½æº¯
äºãFunction Calling ç工使µç¨
ä¸ä¸ªå®æ´ç Function Calling äº¤äºæµç¨å å«ä»¥ä¸å个æ¥éª¤ï¼
ç¨æ·æé® â æ¨¡ååæ â è¾åºå½æ°è°ç¨è¯·æ± â å¼åè æ§è¡å½æ° â ç»æåä¼ â æ¨¡åçææç»åçå ·ä½æµç¨å¦ä¸ï¼
- 注åå·¥å ·ï¼å°å¯ç¨å·¥å ·ä»¥ JSON Schema 形弿³¨åå° API 请æ±ä¸
- 模åå³çï¼æ¨¡ååæç¨æ·è¾å ¥ï¼å³å®æ¯å¦è°ç¨å·¥å ·ãè°ç¨åªä¸ªå·¥å ·
- åæ°è§£æï¼æ¨¡åè¾åºç»æåç彿°åç§°ååæ°ï¼JSON æ ¼å¼ï¼
- æ¬å°æ§è¡ï¼å¼åè 卿¬å°æ§è¡å¯¹åºç彿°é»è¾
- ç»æåä¼ï¼å°å½æ°æ§è¡ç»æä»¥
functionè§è²çæ¶æ¯åä¼ ç»æ¨¡å - æç»è¾åºï¼æ¨¡ååºäºå·¥å ·è¿åç»æçæå®æ´åç
ä¸ã宿ï¼å®ä¹å·¥å ·å½æ°
å设æä»¬è¦æå»ºä¸ä¸ªè½å¤æ¥è¯¢å¤©æ°åè·åå½åæ¶é´ç Agentãé¦å ï¼éè¦å®ä¹å·¥å ·å½æ°ç JSON Schemaï¼
tools = [ { "type": "function", "function": { "name": "get_weather", "description": "è·åæå®åå¸çå½å天æ°ä¿¡æ¯", "parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "åå¸åç§°ï¼ä¾å¦ï¼å京ã䏿µ·" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "温度åä½" } }, "required": ["city"] } } }, { "type": "function", "function": { "name": "get_current_time", "description": "è·åå½åæ¶é´", "parameters": { "type": "object", "properties": { "timezone": { "type": "string", "description": "æ¶åºï¼ä¾å¦ï¼Asia/Shanghai" } }, "required": [] } } } ]