在上一章中,我們了解了語義內核的一些基本概念,最後建立了一個能夠回答一般問題的工作代理,但使用說明具有預定義的語氣和目的。
在第二章中,我們將使用外掛程式為我們的圖書館員新增特定技能。
外掛程式是一組暴露給人工智慧服務的函數。插件封裝了功能,允許助手執行不屬於其本機行為的操作。
例如,透過插件,我們可以讓助理從 API 或資料庫中取得一些資料。此外,助手可以代表使用者執行一些操作,通常是透過 API。此外,助手還可以使用外掛程式更新 UI 的某些部分。
正如我之前提到的,插件是由不同的功能組成的。每個函數主要定義為:
語意核心支援不同類型的插件。在這篇文章中,我們將重點放在其中兩個:提示外掛程式和原生外掛程式。
提示外掛程式基本上是在具體情況下呼叫的特定提示。在典型場景中,我們可能有一個複雜的系統提示,我們在其中定義代理的語氣、目的和一般行為。然而,我們可能希望代理執行一些具體的操作,我們需要定義一些特定的限制和規則。對於這種情況,我們會盡量避免系統提示增長到無限,以減少幻覺並保持模型響應的相關性和可控性。這是提示外掛的完美案例:
提示外掛程式由兩個檔案定義:
要將提示外掛程式加入核心中,我們只需指定資料夾即可。例如,如果我們有資料夾結構 /plugins/plugin_name/skprompt.txt,則插件註冊如下:
本機外掛程式允許模型呼叫本機程式碼(python、C# 或 Java)。插件被表示為一個類,其中任何函數都可以使用註解定義為可從代理呼叫。開發人員必須透過註解向模型提供一些資訊:名稱、描述和參數。
要定義Native Plugin,我們只需建立類別並加入對應的註解:
要將本機外掛程式加入到核心中,我們需要建立該類別的新實例:
語意核心中的函式呼叫,或規劃,是模型呼叫核心中註冊的函數的一種方式。
對於每個使用者訊息,模型都會建立一個計畫來決定如何回覆。首先,它使用聊天歷史記錄和函數的資訊來決定必須呼叫哪個函數(如果有)。一旦被調用,它將函數的結果附加到歷史記錄中,並決定是否已完成使用者訊息中的任務或需要更多步驟。如果沒有完成,則會從第一步重新開始,直到完成任務,或需要使用者的幫助。
由於這個循環,模型可以串聯對不同函數的呼叫。例如,我們可能有一個函數傳回 user_session(包括使用者的 id),另一個函數需要 current_user_id 作為參數。該模型將製定一個計劃,呼叫第一個函數來檢索使用者會話,解析回應並使用 user_id 作為第二個函數的參數。
在語意核心中,我們必須告訴代理程式使用函數呼叫。這是透過定義執行設定並將函數選擇行為設為自動來完成的:
需要強調的是,描述越詳細,使用的代幣就越多,因此成本就越高。在良好的詳細描述和使用的標記之間找到平衡是關鍵。
現在已經清楚了什麼是函數及其用途,讓我們看看如何為我們的圖書館員代理充分利用它。
出於學習目的,我們將定義一個原生外掛程式和一個提示外掛程式:
圖書儲存庫外掛程式:它是一個本機外掛程式,用於從儲存庫檢索圖書。
詩歌創作插件:這是一個提示插件,用於從一本書的第一句話創建一首詩。
我們使用開放式圖書館 API 來檢索圖書資訊。該插件會傳回搜尋的前 5 個結果,包括書名、作者和書的第一句話。
具體來說,我們使用以下端點來檢索資訊:https://openlibrary.org/search.json?q={user-query}&fields=key,title,author_name,first_sentence&limit=5。
首先,我們定義代表系統中一本書的 BookModel:
現在,是該功能的時間了。我們使用函數和參數的清晰描述。在本例中,我們使用複雜的物件作為回應,但模型稍後可以在進一步回應中使用它。
最後,我們可以將此插件加入核心:
我們將這個外掛定義為具有一些特定限制的提示外掛程式。提示符號及其配置如下所示:
/plugins/poem-plugin/poem-creator/config.json:
/plugins/poem-plugin/poem-creator/skprompt.txt:
將外掛程式加入核心非常簡單:
基於現有文獻和我自己的經驗的一些建議:
在本章中,我們使用插件和語義內核規劃增強了圖書館員代理的一些特定技能。
還記得我的 GitHub 儲存庫上已經提供了所有程式碼嗎?用於語義內核的 PyChatbot。
在下一章中,我們將在聊天中包含一些功能,透過創建 檢查器來即時檢查我們的模型如何調用插件並與插件互動。
以上是使用語義內核建立聊天機器人 - 部分插件的詳細內容。更多資訊請關注PHP中文網其他相關文章!