一旦您創建了一個API、清單文件和您的API的OpenAPI規範,您現在就可以通過ChatGPT UI連接插件了。您的插件可能在兩個不同的地方運行,要麼在本地的開發環境中,要麼在遠程服務器上。
如果您有一個在本地運行的API版本,您可以将插件界面指向您的localhost服務器。要連接ChatGPT的插件,請導航到插件商店并選擇“開發您自己的插件”。輸入您的localhost和端口号(例如 localhost:3333)。請注意,目前隻支持auth類型none用于localhost開發。
如果插件在遠程服務器上運行,您首先需要選擇“開發您自己的插件”來設置它,然後選擇“安裝一個未驗證的插件”為自己安裝它。您可以簡單地将插件清單文件添加到yourdomain.com/.well-known/路徑并開始測試您的API。但是,對于您的清單文件的後續更改,您将必須将新的更改部署到您的公共站點,這可能需要很長時間。在這種情況下,我們建議設置一個本地服務器作為您API的代理。這允許您快速原型化您的OpenAPI規範和清單文件的更改。
設置您公共API的本地代理
以下Python代碼是一個示例,說明如何設置您面向公衆的API的簡單代理。
```
import requests
import osimport yaml
from flask import Flask, jsonify, Response, request, send_from_directory
from flask_cors import CORSapp = Flask(__name__)
PORT = 3333
# 注意:設置CORS以允許chat.openapi.com訪問您的插件是必需的
CORS(app, origins=[f"http://localhost:{PORT}", "https://chat.openai.com"])api_url = 'https://example.com'
@app.route('/.well-known/ai-plugin.json')
def serve_manifest():
return send_from_directory(os.path.dirname(__file__), 'ai-plugin.json')@app.route('/openapi.yaml')
def serve_openapi_yaml():
with open(os.path.join(os.path.dirname(__file__), 'openapi.yaml'), 'r') as f:
yaml_data = f.read()
yaml_data = yaml.load(yaml_data, Loader=yaml.FullLoader)
return jsonify(yaml_data)@app.route('/openapi.json')
def serve_openapi_json():
return send_from_directory(os.path.dirname(__file__), 'openapi.json')@app.route('/<path:path>', methods=['GET', 'POST'])
def wrapper(path):headers = {
'Content-Type': 'application/json',
}url = f'{api_url}/{path}'
print(f'Forwarding call: {request.method} {path} -> {url}')if request.method == 'GET':
response = requests.get(url, headers=headers, params=request.args)
elif request.method == 'POST':
print(request.headers)
response = requests.post(url, headers=headers, params=request.args, json=request.json)
else:
raise NotImplementedError(f'Method {request.method} not implemented in wrapper for {path=}')
return response.contentif __name__ == '__main__':
app.run(port=PORT)
```
评论