最近、ChatGPT プロジェクトを作成しました。このプロジェクトを家族と共有したいのですが、国内では直接 openai api にアクセスすることができないため、公式のインターフェースをプロキシする必要があります。
方法は、chatgptProxyAPI で提供されている方法を参考にしてください。
cloudflare pages の使用#
- GitHub を開き、リポジトリを作成します。リポジトリ名は任意で構いません。
- 新しいファイルを作成します。
ファイル名は _worker.js
です。他のアドレスをプロキシする場合は、TELEGRAPH_URL
を直接変更できます。
内容は以下の通りです:
const TELEGRAPH_URL = 'https://api.openai.com';
export default {
async fetch(request, env) {
const NewResponse = await handleRequest(request)
return NewResponse
},
};
async function handleRequest(request) {
const url = new URL(request.url);
const headers_Origin = request.headers.get("Access-Control-Allow-Origin") || "*"
url.host = TELEGRAPH_URL.replace(/^https?:\/\//, '');
const modifiedRequest = new Request(url.toString(), {
headers: request.headers,
method: request.method,
body: request.body,
redirect: 'follow'
});
const response = await fetch(modifiedRequest);
const modifiedResponse = new Response(response.body, response);
// 添加允许跨域访问的响应头
modifiedResponse.headers.set('Access-Control-Allow-Origin', headers_Origin);
return modifiedResponse;
}
その後、変更をコミットします。
- cloudflare を開き、新しいページを作成し、自分の Git と接続します。
- 作成したリポジトリを選択します。
- デフォルトの設定を使用します(変更せずに次のステップに進みます)。
- デプロイが完了するのを待ち、作成したページに戻ると、アドレスが表示されます。
使用方法:#
プロジェクトでの使用方法
https://power-chat.younglele.cn
を開きます。OpenAI API Proxy
の設定で、https://上記で取得したドメインアドレス/v1
を入力します。
- 保存して、ファイアウォールなしで
openai api
にアクセスできるようになります。
Cloudflare Worker の使用方法もありますが、独自のドメインを持ち、Cloudflare にバインドする必要があります。それでもページの方法をお勧めします。
Cloudflare Worker の使用#
- Workers と Pages でアプリケーションを作成します。
- Worker の作成をクリックします。
- 名前を変更し、デプロイをクリックします(コードをデプロイした後に変更します)。
- コードの編集をクリックします。
以下のコードをコードエディタに貼り付け、保存してデプロイをクリックします。
const TELEGRAPH_URL = 'https://api.openai.com';
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url);
const headers_Origin = request.headers.get("Access-Control-Allow-Origin") || "*"
url.host = TELEGRAPH_URL.replace(/^https?:\/\//, '');
const modifiedRequest = new Request(url.toString(), {
headers: request.headers,
method: request.method,
body: request.body,
redirect: 'follow'
});
const response = await fetch(modifiedRequest);
const modifiedResponse = new Response(response.body, response);
// 添加允许跨域访问的响应头
modifiedResponse.headers.set('Access-Control-Allow-Origin', headers_Origin);
return modifiedResponse;
}
成功したら、作成した workers ページに戻ります。
これでまだうまくいかない場合は、workers.dev がまだブロックされているためです。この場合、ドメインをバインドする必要があります。
ただし、このカスタムドメインは、Cloudflare 上でアクティブなドメインである必要があります。左側の ウェブサイト をクリックし、手順に従って独自のドメインを追加するか、Cloudflare で購入する必要があります。