Saltu al la enhavo
Reen al Nymbot

Sciobazo Programistoj

Iloj kaj SDK-oj

Ĉio, kio povas paroli kun OpenAI aŭ Anthropic, povas paroli kun Nymbot. Preskaŭ en ĉiu kazo temas pri baza URL, ŝlosilo kaj modelnomo.

Ĉiu agordo malsupre bezonas API-ŝlosilon, kreitan en la aplikaĵo de API menuo (vidi API-ŝlosiloj), kaj modelo-identigilo de la listo de modeloj. La ekzemploj uzas anthropic/claude-sonnet-5 sur la Pro-ekvilibro. nymbot/auto estas la malpli multekosta elekto por la norma ekvilibro por simpla babado, sed ĝi ne povas voki ilojn, kiujn Goose bezonas; por tio, elektu katalogan modelon kun capabilities.tools.

Agordo por kodaj agentoj kiel Claude Code, Codex, Cline, Kilo Code kaj Continue estas sur sia propra paĝo: programistaj iloj.

Donu al ĉiu ilo sian propran ŝlosilon

Kreu apartan ŝlosilon por ĉiu ilo, kun limigo. Kodaj agentoj faras multajn modelvokojn por unu tasko, kaj limigo de la ŝlosilo estas la plej simpla maniero scii la maksimumon, kiun ilo povas elspezi. Se ilo maloperas, revoku ĝian ŝlosilon kaj nenio alia estas trafata.

OpenAI SDK

La oficialaj Python kaj JavaScript bibliotekoj funkcias sen ŝanĝo. Ponto base_url at Nymbot kaj pasigu vian ŝlosilon. Chat Completions, Responsoj, bildoj, aŭdio kaj enbedigoj ĉiuj funkcias tra ili.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "anthropic/claude-sonnet-5", "messages": [{"role": "user", "content": "Hello"}]}'

Python

# pip install openai
import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{"role": "user", "content": "Hello"}],
)
print(reply.choices[0].message.content)

JavaScript

// npm install openai
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  messages: [{ role: "user", content: "Hello" }],
});
console.log(reply.choices[0].message.content);

La propraj kampoj de Nymbot, kiel ekzemple plugins por retserĉo, eniru extra_body en Python kaj rekte en la peto-objekton en JavaScript. La nymbot kostujo objekto en respondo estas reply.model_extra["nymbot"] en Python kaj reply.nymbot en JavaScript. Bibliotekoj, kiuj legas la OPENAI_BASE_URL kaj OPENAI_API_KEY medio-variables povas esti direktitaj al Nymbot per tiuj sole.

Anthropic SDK

La Anthropic-bibliotekoj uzas https://nymbot.ai/api kiel la bazaj URL, sen /v1, ĉar ili aldonas /v1/messages mem si mem. IAny kataloga modelo funkcias, ne nur Claude.

cURL

curl https://nymbot.ai/api/v1/messages \
  -H "x-api-key: $NYMBOT_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-sonnet-5", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}]}'

Python

# pip install anthropic
import os
import anthropic

client = anthropic.Anthropic(base_url="https://nymbot.ai/api", api_key=os.environ["NYMBOT_API_KEY"])

message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)
print(message.content[0].text)

JavaScript

// npm install @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://nymbot.ai/api", apiKey: process.env.NYMBOT_API_KEY });

const message = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello" }],
});
console.log(message.content[0].text);

Helpi

Aider parolas kun iu ajn OpenAI-kompatibla servilo. Agordu la bazan URL-on kaj ŝlosilon, kaj metu openai/ antaŭ la modelo-identigilo tiel ke Aider sciu kion specon de servilo ĝi estas:

Shell

export OPENAI_API_BASE=https://nymbot.ai/api/v1
export OPENAI_API_KEY=sk-nymbot-...
aider --model openai/anthropic/claude-sonnet-5

Aider eble avertos, ke ĝi ne scias la modelan kuntekstan grandecon aŭ prezon. La avertado estas senharmena; --no-show-model-warnings kaŝas ĝin.

Malfermita Ret-uzantinterfaco

En Open WebUI, malfermu Administra Panelo, tiam Agordoj, tiam Konektadoj, kaj aldonu OpenAI API konekton:

  • URL: https://nymbot.ai/api/v1
  • Ŝlosilo: via API-ŝlosilo

Open WebUI legas la modelliston de la API, do ĉiu babila modelo aperas en ĝia elektilo. Kiam oni rulas ĝin en Docker, la sama afero povas esti agordita per la medio-variabloj. OPENAI_API_BASE_URL kaj OPENAI_API_KEY.

Open WebUI konservas viajn konversaciojn en sia propra servilo. Nymbot ne stokoas ilin, sed Open WebUI stes, kie ajn vi rulumas ĝin.

Gegego

Kursu goose configure, elektu Konfiguri Provizantojn, elektu OpenAI, kaj donu al ĝi tiujn valorojn kiam petata. La sama povas esti agita en la medio:

Shell

export GOOSE_PROVIDER=openai
export OPENAI_HOST=https://nymbot.ai/api
export OPENAI_BASE_PATH=v1/chat/completions
export OPENAI_API_KEY=sk-nymbot-...
export GOOSE_MODEL=anthropic/claude-sonnet-5
goose session

Goose vokas ilojn ĉe preskaŭ ĉiu paŝo, do elektu modelon kun capabilities.tools en la modelaro; nymbot/auto rifuzas ilojn.

Nura HTTP

Neniu bezonas SDK. Ĉiu fino estas JSON super HTTPS, krom la dosierŝarĝoj, kiuj estas multipartaj formularoj. Ĉiu lingvo aŭ ilo, kiu povas fari HTTP-peton, povas uzi la API:

  • Sendu la ŝlosilon kiel Authorization: Bearer sk-nymbot-….
  • Sendu JSON-korpojn kun Content-Type: application/json.
  • Por fluigo, legu la respondon kiel servon-senditajn eventojn; per cURL, aldonu -N tiel ĝi presas ilin kiel ili alvenas.
  • Legu la koston el la X-Nymbot-Cost-Sats headero, kaj konservu la X-Request-Id titolo se vi eble bezonos demandi pri peto.

cURL

curl -i https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "nymbot/auto", "messages": [{"role": "user", "content": "Hello"}]}'

Python

import os
import requests

res = requests.post(
    "https://nymbot.ai/api/v1/chat/completions",
    headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
    json={"model": "nymbot/auto", "messages": [{"role": "user", "content": "Hello"}]},
)
print(res.headers["X-Nymbot-Cost-Sats"], res.headers["X-Request-Id"])
print(res.json()["choices"][0]["message"]["content"])

JavaScript

const res = await fetch("https://nymbot.ai/api/v1/chat/completions", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ model: "nymbot/auto", messages: [{ role: "user", content: "Hello" }] }),
});
console.log(res.headers.get("X-Nymbot-Cost-Sats"), res.headers.get("X-Request-Id"));
console.log((await res.json()).choices[0].message.content);