Коллекция бесплатных диалоговых интерфейсов для инверсии макромоделей в 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 to API, GPT4)

 

Отечественная модель Реверс

глубокий поиск(DeepSeek) Интерфейс к API deepseek-free-api

Moonshot AI (Kimi.ai) Интерфейс для API kimi-free-api

прыгающие звёзды (Leapfrog Ask StepChat) Интерфейс к API step-free-api

Ali Tongyi (Qwen) Интерфейс для API qwen-free-api

ZhipuAI (интеллектуально стимулирующая речь) Интерфейс к API glm-free-api

Meta AI (metaso) Интерфейс к API metaso-free-api

Переход через байт (Beanbag) Интерфейс к API doubao-free-api

Переход через байт (т.е. Dream AI) Интерфейс к API jimeng-free-api

Интерфейс Spark к API spark-free-api

MiniMax (Conch AI) Интерфейс для API hailuo-free-api

Интерфейс Emohaa к API emohaa-free-api

Программа без входа в систему с интерфейсом чата

https://github.com/Mylinde/FreeGPT

 

Рабочий код для cloudflare, привяжите собственное доменное имя и играйте:

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

async-функция 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; // получаем аргумент stream

// Создайте новый запрос
const newRequest = new Request(url, {
метод: 'POST',
заголовки: заголовки,
body: JSON.stringify(requestBody) // используем модифицированное тело
});

попробуйте {
// Отправьте запрос к целевому API
const response = await fetch(newRequest);

// Определите тип ответа на основе параметра потока
if (stream) {
// Обработка потоковых ответов
const { readable, writable } = new TransformStream();
response.body.pipeTo(writable);
return new Response(readable, {
заголовки: response.headers
});
} else {
// Обычный ответ
return new Response(response.body, {
статус: response.status,
заголовки: response.headers
});
}
} catch (e) {
// Если запрос не выполняется, верните сообщение об ошибке
return new Response(JSON.stringify({ error: 'Unable to reach the 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' \
--data '{
"модель": "gpt-4-turbo".
"сообщения": [
{
"role": "user", "content": "Почему Лу Сюнь победил Чжоу Шурэна".
}],
"stream": true
}'

 

Добавьте псевдопотоковый код (вывод будет медленнее):

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

async-функция handleRequest(request) {
if (request.method === "OPTIONS") {
return new Response(null, {
заголовки: {
'Access-Control-Allow-Origin': '*',
"Access-Control-Allow-Headers": '*'
}, статус: 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; // получаем аргумент stream

// Создайте новый запрос
const newRequest = new Request(url, {
метод: 'POST',
заголовки: заголовки,
body: JSON.stringify(requestBody) // используем модифицированное тело
});

попробуйте {
// Отправьте запрос к целевому API
const response = await fetch(newRequest);

// Определите тип ответа на основе параметра потока
if (stream) {
const originalJson = await response.json(); // читаем все данные сразу
// Создайте поток для чтения
const readableStream = new ReadableStream({
start(controller) {
// Отправка стартовых данных
const startData = createDataChunk(originalJson, "start");
controller.enqueue(new TextEncoder().encode('data: ' + JSON.stringify(startData) + '\n\n'));

// Предполагается, что несколько кусков данных обрабатываются и отправляются в соответствии с originalJson.
// Например, для имитации отправки данных партиями
const content = originalJson.choices[0].message.content; // предполагается, что это и есть содержимое для отправки
const newData = createDataChunk(originalJson, "data", content);
controller.enqueue(new TextEncoder().encode('data: ' + JSON.stringify(newData) + '\n\n'));

// Отправка конечных данных
const endData = createDataChunk(originalJson, "end");
controller.enqueue(new TextEncoder().encode('data: ' + JSON.stringify(endData) + '\n\n'));

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',
'Connection': 'keep-alive'
}
});
} else {
// Обычный ответ
return new Response(response.body, {
статус: response.status,
заголовки: response.headers
});
}
} catch (e) {
// Если запрос не выполняется, верните сообщение об ошибке
return new Response(JSON.stringify({ error: 'Unable to reach the backend API' }), { status: 502 });
}
} else {
// Возвращает ошибку, если метод запроса не POST или путь неверен.
return new Response('Not found', { status: 404 });
}
}

// Создайте различные блоки данных в зависимости от типа
function createDataChunk(json, type, content = {}) {
switch (type) {
случай "начало".
вернуться {
id: json.id,
объект: "chat.completion.chunk",
created: json.created,
модель: json.model,
choices: [{ { delta: {}, index: 0, finish_reason: null }]}; }
случай "данные".
вернуться {
id: json.id,
объект: "chat.completion.chunk",
created: json.created,
модель: json.model,
choices: [{ { delta: { content }, index: 0, finish_reason: null }]}; }
случай "конец".
вернуться {
id: json.id,
объект: "chat.completion.chunk",
created: json.created,
модель: json.model,
choices: [{ { delta: {}, index: 0, finish_reason: 'stop' }]}; }
по умолчанию.
вернуться {};
}
}

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...