大模型Function Calling实战:让Agent拥有工具调用能力
大模åFunction Calling宿ï¼è®©Agentæ¥æå·¥å ·è°ç¨è½åå¼è¨AI Agent çæ ¸å¿ä»·å¼å¨äºè½å¤èªä¸»å®æå¤æä»»å¡ãç¶èï¼å¤§è¯è¨æ¨¡åï¼LLMï¼æ¬è´¨ä¸åªè½çæææ¬ï¼æ æ³ç´æ¥è·å宿¶æ°æ®ãæ§è¡ä»£ç ææä½å¤é¨ç³»ç»ãFunction Callingï¼å½æ°è°ç¨ï¼æºå¶çåºç°ï¼æ°å¥½å¼¥è¡¥äºè¿ä¸çæ¿ââå®è®©æ¨¡åè½å¤çè§£ä½æ¶éè¦è°ç¨å¤é¨å·¥å ·ãè°ç¨åªä¸ªå·¥å ·ãä¼ å ¥ä»ä¹åæ°ï¼å¹¶å°æ§è¡ç»æåä¼ ç»æ¨¡åç»§ç»æ¨çãæ¬æå°æ·±å ¥è®²è§£ OpenAI Function Calling ç宿´å®ææµç¨ï¼å¸®å©ä½ æå»ºå ·å¤å·¥å ·è°ç¨è½åçæºè½ Agentãä¸ãä»ä¹æ¯ Function CallingFunction 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: [] } } } ]