AIパーソナル・ラーニング
と実践的なガイダンス
豆包Marscode1

APIインターフェースへの自由な対話マクロモデル反転のコレクション

GPT3.5からAPIへの無料ログイン

https://github.com/missuo/FreeGPT35


https://github.com/aurora-develop/aurora

https://github.com/Dalufishe/freegptjs

https://github.com/PawanOsman/ChatGPT

https://github.com/nashsu/FreeAskInternet

https://github.com/aurorax-neo/free-gpt3.5-2api

https://github.com/aurora-develop/free-gpt3.5-2api

https://github.com/LanQian528/chat2api

https://github.com/k0baya/FreeGPT35-Glitch

https://github.com/cliouo/FreeGPT35-Vercel

https://github.com/hominsu/freegpt35

https://github.com/xsigoking/chatgpt-free-api

https://github.com/skzhengkai/free-chatgpt-api

https://github.com/aurora-develop/aurora-glitch(グリッチリソースを使用)

https://github.com/fatwang2/coze2openai (COZEからAPI、GPT4)

 

国内モデル・リバース

徹底探索(DeepSeek) API へのインターフェース ディープシーク・フリー・アピ

ムーンショットAI(Kimi.ai)のAPIへのインターフェース キミ・フリー・アピ

ジャンピングスター (リープフロッグ・アスク・ステップチャット)APIへのインターフェース ステップフリーアピ

アリ・トンイ(Qwen) APIへのインターフェース qwenフリーAPI

ZhipuAI (知的好奇心を刺激するスピーチ) APIへのインターフェース glm-free-api

メタAI(メタソ) APIへのインターフェース メタソ・フリー・アピ

バイトジャンプ(ビーンバッグ) APIへのインターフェース doubaoフリーアプリ

バイトジャンプ(ドリームAI APIへのインターフェース jimengフリーAPI

APIへのスパーク・インターフェース スパークフリーアピ

MiniMax (Conch AI) APIへのインターフェース hailuo-free-api

エモハアAPIインターフェイス エモハア・フリー・アピ

チャット・インターフェースを備えたログイン不要のプログラム

https://github.com/Mylinde/FreeGPT

 

cloudflareのワークコードは、再生するために独自のドメイン名を結びつける:

addEventListener("fetch", event => {)
event.respondWith(handleRequest(event.request))
})

非同期関数 handleRequest(request) {
// リクエストがPOSTリクエストであり、パスが正しいことを確認する。
if (request.method === "POST" && new URL(request.url).pathname === "/v1/chat/completions") {.
const url = 'https://multillm.ai-pro.org/api/openai-completion'; // ターゲットAPIアドレス
const headers = new Headers(request.headers);

// 必要に応じてヘッダーを追加または修正する
headers.set('Content-Type','application/json');

// リクエストのボディを取得し、JSONを解析する。
const requestBody = await request.json();
const stream = requestBody.stream; // ストリーム引数の取得

// 新しいリクエストを作成する
const newRequest = new Request(url, {)
メソッド: 'POST'、
headers:ヘッダー、
body: JSON.stringify(requestBody) // 変更されたボディを使用する
});

を試す。
// ターゲットAPIにリクエストを送信する
const response = await fetch(newRequest);

// ストリーム・パラメーターに基づいてレスポンス・タイプを決定する
if (ストリーム) {。
// ストリーミング・レスポンスの処理
const { readable, writable } = new TransformStream();
response.body.pipeTo(writable);
新しいResponse(readable, {) を返す
ヘッダー: response.headers
});
} else {
// 通常のリターン・レスポンス
return new Response(response.body, {
status: response.status、
ヘッダー: response.headers
});
}
キャッチ (e) {
// リクエストに失敗した場合は、エラーメッセージを返す。
return new Response(JSON.stringify({ error: 'Unable to reach backend API' }), { status: 502 });
}
} else {
// リクエストメソッドがPOSTでないか、パスが正しくない場合はエラーを返す。
return new Response('Not found', { status: 404 });
}
}

POSTの例:

curl --location 'https://ai-pro-free.aivvm.com/v1/chat/completions' \
--header 'Content-Type: application/json' \
--データ '{
「model": "gpt-4-turbo"。
"メッセージ": [
{
"role":"user"、"content":"魯迅が周秀蓮に勝った理由"
}],
「stream": true
}'

 

擬似ストリーミング・コードを追加する(出力は遅くなる):

addEventListener("fetch", event => {)
event.respondWith(handleRequest(event.request))
})

非同期関数 handleRequest(request) {
if (request.method === "OPTIONS") {。
新しいレスポンス(null, {)
ヘッダー: {
'Access-Control-Allow-Origin':'*'、
「アクセス制御許可ヘッダー": '*'
}, status: 204
})
}
// リクエストがPOSTリクエストであり、パスが正しいことを確認する。
if (request.method === "POST" && new URL(request.url).pathname === "/v1/chat/completions") {.
const url = 'https://multillm.ai-pro.org/api/openai-completion'; // ターゲットAPIアドレス
const headers = new Headers(request.headers);

// 必要に応じてヘッダーを追加または修正する
headers.set('Content-Type','application/json');

// リクエストのボディを取得し、JSONを解析する。
const requestBody = await request.json();
const stream = requestBody.stream; // ストリーム引数の取得

// 新しいリクエストを作成する
const newRequest = new Request(url, {)
メソッド: 'POST'、
headers:ヘッダー、
body: JSON.stringify(requestBody) // 変更されたボディを使用する
});

を試す。
// ターゲットAPIにリクエストを送信する
const response = await fetch(newRequest);

// ストリーム・パラメーターに基づいてレスポンス・タイプを決定する
if (ストリーム) {。
const originalJson = await response.json(); // 一度に完全なデータを読み込む
// 読み取り可能なストリームを作成する
const readableStream = 新しいReadableStream({)
start(コントローラ) { {
// スタートデータの送信
const startData = createDataChunk(originalJson, "start");
controller.enqueue(new TextEncoder().encode('data: ' + JSON.stringify(startData) + '୨୧'));

// 複数のデータチャンクが処理され、originalJsonに従って送信されると仮定する。
// 例えば、データをバッチで送信するシミュレーションを行う。
const content = originalJson.choices[0].message.content; // これが送信するコンテンツであると仮定する。
const newData = createDataChunk(originalJson, "data", content);
controller.enqueue(new TextEncoder().encode('data: ' + JSON.stringify(newData) + '୨୧'));

// 終了データを送信
const endData = createDataChunk(originalJson, "end");
controller.enqueue(new TextEncoder().encode('data: ' + JSON.stringify(endData) + '୨୧'));

controller.enqueue(new TextEncoder().encode('data: [DONE]'));
// ストリームの終わりを示す
controller.close();
}
});
return new Response(readableStream, {.
ヘッダー: {
'Access-Control-Allow-Origin':'*'、
「Access-Control-Allow-Headers": '*'、
Content-Type': 'text/event-stream'、
Cache-Control': 'no-cache'、
接続」:「キープアライブ
}
});
} else {
// 通常のリターン・レスポンス
return new Response(response.body, {
status: response.status、
ヘッダー: response.headers
});
}
キャッチ (e) {
// リクエストに失敗した場合は、エラーメッセージを返す。
return new Response(JSON.stringify({ error: 'Unable to reach backend API' }), { status: 502 });
}
} else {
// リクエストメソッドがPOSTでないか、パスが正しくない場合はエラーを返す。
return new Response('Not found', { status: 404 });
}
}

// タイプに基づいて異なるデータ・ブロックを作成する
function createDataChunk(json, type, content = {}) {.
スイッチ (タイプ) {
start "の場合。
を返す。
id: json.id、
オブジェクト: "chat.completion.chunk"、
created: json.created、
model: json.model、
choices: [{ delta: {}, index: 0, finish_reason: null }]]。 }.
data "の場合。
を返す。
id: json.id、
オブジェクト: "chat.completion.chunk"、
created: json.created、
model: json.model、
choices: [{ delta: { content }, index: 0, finish_reason: null }]]。 }.
case "end".
を返す。
id: json.id、
オブジェクト: "chat.completion.chunk"、
created: json.created、
model: json.model、
choices: [{ delta: {}, index: 0, finish_reason: 'stop' }]]。 }.
デフォルトだ。
を返す;
}
}

無断転載を禁じます:チーフAIシェアリングサークル " APIインターフェースへの自由な対話マクロモデル反転のコレクション
ja日本語