前言:
Q: 什麼是DaVinci plugin?
A: DaVinci Plugin, 是可以賦予DaVinci有更多擴展功能的延伸插件, 讓DaVinci的知識不僅僅只限於模型本身的知識,而是可以賦予他更多的外部知識以及操作能力。例如:
提供他查詢天氣的plugin, 他就能連結到氣象局索取最新資訊,
提供他公司的eworkflow plugin, 便能讓DaVinci協助eworkflow相關事務.
提供法院判決書API, DaVinci 一秒化身判決達人!
DaVinci Plugin介紹:
DaVinci Plugin 是一個JSON格式, 其內容如下方範例:
程式碼區塊 | ||
---|---|---|
| ||
{
"id": "plugin_guide",
"schema_version": "v1.0",
"name_for_human": "plugin_guide",
"name_for_model": "plugin_guide",
"description_for_human": "plugin_guide",
"description_for_model": "You need to choose this tool anytime, to search for any information with user language that helps replying to users.",
"auth": {
"type": "none"
},
"api": {
"type": "python",
"python": {
"source": ""
}
}
} |
這是一個標準的Plugin json 內容, 其中 description_for_model
是告訴DaVinci 該怎麼使用這個plugin的敘述.
其他內容我們將一一介紹.
DaVinci Plugin 安裝:
1.點選對話欄的閃電
...
接著點選 + Upload Plugin
...
按下中間白色的 Upload Plugin.json, 選擇您的 plugin json 檔案, 並且按下Save
...
之後在您的Plugin 清單就可以看到剛剛新增的Plugin了(本例為 未來天氣預報API), 完成plugin安裝.
...
DaVinci Plugin 有兩種開發模式:
1.OpenAPI yamlType
2.Python edge
OpenAPI:
Python edge:Type
...
OpenAPI Type:
OpenAPI Type 的Plugin, 使用符合OpenAPI 格式的yaml檔, 只要在Plugin 中,指定你的yaml 的位置, DaVinci 會去這個url 下載yaml檔案, 並且依照裡面的API format 進行API的資訊檢索.
OpenAPI Type Plugin example:
程式碼區塊 |
---|
{
"id": "Weather_API",
"schema_version": "v1",
"name_for_human": "Weather_API",
"name_for_model": "Weather_API",
"description_for_human": "Weather_API",
"description_for_model": "當你需要查詢未來天氣的相關資料, 請使用這個API, 並且整理相關資訊以表格輸出",
"auth": "none",
"api": {
"type": "openapi",
"url": "https://example.com/weather.yaml"
}
} |
這是一個 查詢天氣的範例, 假設我們要使用氣象資料開放平台提供的開源API來索取資料, 需要兩個步驟:
1. 根據氣象資料開放平台的API範例, 將各API的url 以及參數, 轉換成yaml檔案 並且存放到您的伺服器中
2. plugin json 檔裡面, 修改這兩個地方
程式碼區塊 |
---|
"api": {
"type": "openapi",
"url": "https://example.com/weather.yaml"
} |
即可完成Plugin 的製作
Python Type:
Python type plugin, 是針對比較複雜需求而設計, 例如您希望plugin可以先去arxiv, github 查詢最新的資訊, 再來請DaVinci幫忙摘要,或是希望plugin 可以使用自己設計的程式運算, python plugin 會先運行您提供的python code, 之後再丟給DaVinci 進行回答.
Python Type Plugin example:
程式碼區塊 |
---|
{
"id": "ScholarChat",
"schema_version": "v2.0",
"name_for_human": "ScholarChat",
"name_for_model": "ScholarChat",
"description_for_human": "ScholarChat",
"description_for_model": "You can reach out to this tool to seach for any acadamically related information on the web.",
"auth": {
"type": "none"
},
"api": {
"type": "python",
"python": {
"source": "import json\nimport asyncio\nimport re\nfrom pyodide.http import pyfetch\nimport xml.etree.ElementTree as ET\nfrom urllib.parse ...{python code here}"
}
}
} |
可以發現 在api 部分, 跟OpenAPI Type 的內容不同, type 是 python, source的部分則是您設計的python 代碼.
本教學手冊 會針對 Python Type Plugin 開發進行更細節的說明, 包括有哪些公域變數可以用, 有哪些內建的API可以呼叫, 如何跟LLM對話, 再請您依照需求選擇需要的章節查看.