# Function Calling

<div id="bkmrk-llm%EF%BC%88large-language-m">LLM（Large Language Model）的一個新功能是 Function Calling（函數呼叫）。這項功能允許LLM直接呼叫外部函數，並將其結果整合到模型的輸出中。下面是它的工作原理和應用： </div><div id="bkmrk-"></div><div id="bkmrk-%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86">**工作原理**</div><div id="bkmrk-%C2%A0function-calling-%E7%9A%84%E5%B7%A5"> Function Calling 的工作原理是，LLM 在生成輸出時，可以 reconocize 具體的函數名稱和參數，並將其傳遞給外部函數執行。外部函數執行後，將結果返回給LLM，LLM 則將其整合到輸出中。這個過程可以重複多次，實現多個函數的呼叫和整合。</div><div id="bkmrk--1">  
</div><div id="bkmrk-%E7%AF%84%E4%BE%8B">**範例**</div><div id="bkmrk-%E4%BE%8B%E5%A6%82%EF%BC%8C%E5%81%87%E8%A8%AD%E6%9C%89%E4%B8%80%E5%80%8Bllm%E9%9C%80%E8%A6%81%E7%94%9F%E6%88%90%E4%B8%80%E5%80%8B%E5%A4%A9%E6%B0%A3%E5%A0%B1">例如，假設有一個LLM需要生成一個天氣報告，LLM 可以呼叫一個外部函數，該函數可以從天氣API中獲取当前的天氣資訊。 LLＭ將函數的結果整合到輸出中，生成一個完整的天氣報告。</div><div id="bkmrk--2">  
</div><div id="bkmrk-%E6%87%89%E7%94%A8">**應用**</div><div id="bkmrk-function-calling-%E7%9A%84%E6%87%89%E7%94%A8">Function Calling 的應用非常廣泛，以下是一些例子：</div><div id="bkmrk-%E6%95%B8%E6%93%9A%E8%99%95%E7%90%86%EF%BC%9Allm-%E5%8F%AF%E4%BB%A5%E5%91%BC%E5%8F%AB%E5%A4%96%E9%83%A8%E5%87%BD%E6%95%B8%E5%B0%8D%E6%95%B8%E6%93%9A">- 數據處理：LLM 可以呼叫外部函數對數據進行處理和分析，例如數據清理、資料轉換等。
- API 整合：LLM 可以呼叫外部API，例如天氣API、地圖API等，獲取所需的資訊。
- 計算任務：LLM 可以呼叫外部函數執行複雜的計算任務，例如科學計算、機器學習等。
- 自定義功能：LLM 可以呼叫外部函數實現自定義的功能，例如特殊的算法、business logic 等。

</div><div id="bkmrk-%E7%B8%BD%E4%B9%8B%EF%BC%8Cfunction-calling-">總之，Function Calling 是 LLM 的一個強大功能，可以擴展模型的能力，實現更加 Complex 和多樣化的任務。</div>##### Tutorials

- [9 Best Local LLM For Function Calling (Open Source) \[2024\] - Sci Fi Logic](https://scifilogic.com/best-llm-for-function-calling/)

##### Models

- [Berkeley Function Calling Leaderboard (aka Berkeley Tool Calling Leaderboard)](https://gorilla.cs.berkeley.edu/leaderboard.html)