每個插件都需要一個ai-plugin.json文件,該文件需要托管在 API 的域上。例如,一家名為example.com 的公司,可以通過https://example.com example.com域訪問插件 JSON 文件,因為這是托管其 API 的地方。當您通過 ChatGPT UI 安裝插件時,我們會在後端查找/.well-known/ai-plugin.json。該文件夾是必需的,并且必須存在于您的域中,以便 ChatGPT 與您的插件連接。如果在/.well-known沒有找到文件,則無法安裝插件。對于本地開發,您可以使用 HTTP,但如果您指向遠程服務器,則需要 HTTPS。
所需文件的最小定義ai-plugin.json如下所示:
{
"schema_version": "v1",
"name_for_human": "TODO List",
"name_for_model": "todo",
"description_for_human": "Manage your TODO list. You can add, remove and view your TODOs.",
"description_for_model": "Help the user with managing a TODO list. You can add, remove and view your TODOs.",
"auth": {
"type": "none"
},
"api": {
"type": "openapi",
"url": "http://localhost:3333/openapi.yaml"
},
"logo_url": "http://localhost:3333/logo.png",
"contact_email": "support@example.com",
"legal_info_url": "http://www.example.com/legal"
}
如果您想查看插件文件的所有可能選項,可以參考下面的定義。命名您的插件時,請記住我們的品牌指南和以下字段的各種字符限制,不遵守這些指南的插件将不會被批準進入插件商店。
字段 | 類型 | 描述/選項 | 必需的 | 公開的 |
---|---|---|---|---|
schema_version | String | 清單架構版本 | ✅ | |
name_for_model | String | 模型将用于定位插件的名稱(不允許空格,隻能字母和數字)。最多 50 個字符 | ✅ | |
name_for_human | String | 人類可讀的名稱,例如公司完整名稱。最多 20 個字符 | ✅ | ✅ |
description_for_model | String | 更好地針對模型定制的描述,例如令牌上下文長度注意事項或用于改進插件提示的關鍵字使用。最多 8,000 個字符 | ✅ | |
description_for_human | String | 人類可讀的插件描述。最多 100 個字符 | ✅ | ✅ |
auth | ManifestAuth | 認證架構 | ✅ | |
api | Object | API規範 | ✅ | |
logo_url | String | 用于獲取徽标的 URL。建議尺寸:512 x 512。支持透明背景。必須是圖片,不允許使用 GIF。 | ✅ | |
contact_email | String | 安全/審核、支持和停用的電子郵件聯系 | ✅ | ✅ |
legal_info_url | String | 重定向 URL,供用戶查看插件信息 | ✅ | ✅ |
HttpAuthorizationType | HttpAuthorizationType | “bearer”或“basic” | ✅ | |
ManifestAuthType | ManifestAuthType | “none”、“user_http”、“service_http”或“oauth” | ||
interface BaseManifestAuth | BaseManifestAuth | 類型:ManifestAuthType;指令:字符串; | ||
ManifestNoAuth | ManifestNoAuth | 無需身份驗證:BaseManifestAuth & { type: 'none', } | ||
ManifestAuth | ManifestAuth | ManifestNoAuth、ManifestServiceHttpAuth、ManifestUserHttpAuth、ManifestOAuthAuth |
請注意,公開的(Public)下面列出的項目将在插件商店中可供用戶使用,并且完整的清單文件将傳輸到用戶的客戶端,并且可能對他們可見。
以下是不同身份驗證方法的示例:
# App-level API keys
type ManifestServiceHttpAuth = BaseManifestAuth & {
type: 'service_http';
authorization_type: HttpAuthorizationType;
verification_tokens: {
[service: string]?: string;
};
}# User-level HTTP authentication
type ManifestUserHttpAuth = BaseManifestAuth & {
type: 'user_http';
authorization_type: HttpAuthorizationType;
}type ManifestOAuthAuth = BaseManifestAuth & {
type: 'oauth';# OAuth URL where a user is directed to for the OAuth authentication flow to begin.
client_url: string;# OAuth scopes required to accomplish operations on the user's behalf.
scope: string;# Endpoint used to exchange OAuth code with access token.
authorization_url: string;# When exchanging OAuth code with access token, the expected header 'content-type'. For example: 'content-type: application/json'
authorization_content_type: string;# When registering the OAuth client ID and secrets, the plugin service will surface a unique token.
verification_tokens: {
[service: string]?: string;
};
}
上述清單文件中某些字段的長度有限制,這些字段可能會發生變化。我們還對 API 響應正文規定了 100,000 個字符的上限,該上限也可能随時間而變化。
一般來說,最佳實踐是使描述和響應盡可能簡潔,因為模型的上下文窗口有限。
评论