LLMcode

Свой код

Чужой сайт подключается своим кодом к шлюзу. Замените base_url в OpenAI-совместимом SDK на https://llmcode.org/v1. Ключ из кабинета кладут в окружение сервера сайта. В HTML, который видит гость, ключ не вставляют. Шлюз не смотрит на Origin: верный ключ принимается и из браузера, но тогда секрет виден гостю. Эта версия отвечает на POST /v1/chat/completions, POST /v1/messages, POST /v1/responses, POST /v1/embeddings, GET /v1/models и GET /v1/models/:id. Стриминг в примерах показан, потому что его требует таблица 7; вызов со stream:true получает 400 stream_not_enabled. Картинки, звук и видео эта версия не обслуживает.

Создайте ключ в кабинете на https://llmcode.org: секрет показывается один раз. На сервере чужого сайта запишите его в переменную LLMCODE_API_KEY. Не кладите секрет в скрипт, который скачивает браузер гостя. В коде сайта замените base_url на https://llmcode.org/v1 и вызовите chat.completions. Список моделей для интерфейса этого сайта сервер берёт так: GET https://llmcode.org/v1/models с тем же ключом.

cURL

curl https://llmcode.org/v1/chat/completions \
  -H "Authorization: Bearer $LLMCODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"demo","messages":[{"role":"user","content":"hi"}]}'

Python, openai SDK

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://llmcode.org/v1",
    api_key=os.environ["LLMCODE_API_KEY"],
)
reply = client.chat.completions.create(
    model="demo",
    messages=[{"role": "user", "content": "hi"}],
)
print(reply.choices[0].message.content)

Python, anthropic SDK

# Messages на том же ключе. ANTHROPIC_BASE_URL без окончания /v1.
import os
from anthropic import Anthropic

client = Anthropic(
    base_url="https://llmcode.org",
    api_key=os.environ["LLMCODE_API_KEY"],
)

Node, openai

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://llmcode.org/v1",
  apiKey: process.env.LLMCODE_API_KEY,
});
const reply = await client.chat.completions.create({
  model: "demo",
  messages: [{ role: "user", content: "hi" }],
});

Node, @anthropic-ai/sdk

// Messages на том же ключе. ANTHROPIC_BASE_URL без окончания /v1.
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "https://llmcode.org",
  apiKey: process.env.LLMCODE_API_KEY,
});

Go

body := bytes.NewBufferString(`{"model":"demo","messages":[{"role":"user","content":"hi"}]}`)
req, err := http.NewRequest(http.MethodPost, "https://llmcode.org/v1/chat/completions", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("LLMCODE_API_KEY"))
req.Header.Set("Content-Type", "application/json")

Стриминг

# Эта версия отвечает 400 stream_not_enabled.
curl https://llmcode.org/v1/chat/completions \
  -H "Authorization: Bearer $LLMCODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"demo","messages":[{"role":"user","content":"hi"}],"stream":true}'

Список моделей

curl https://llmcode.org/v1/models \
  -H "Authorization: Bearer $LLMCODE_API_KEY"

Все подключения