Saltar al contingut
Torna cap a Nymbot

Base de coneixement Desenvolupadors

Eines i SDK

Qualsevol cosa que pugui parlar amb OpenAI o Anthropic pot parlar amb Nymbot. En gairebé tots els casos és una URL de base, una clau i un nom de model.

Cada instal·lació a continuació necessita una clau d'API, feta a l'aplicació. El foc El menú (veure Claus de foc), i un model d'identificació de La llista de modelsEls exemples utilitzats anthropic/claude-sonnet-5 A favor de l’equilibri. nymbot/auto és l'opció més barata en l'equilibri estàndard per a xat simple, però no pot trucar a eines, que Goose necessita; per a això, tria un model de catàleg amb capabilities.tools.

La configuració per a agents de codificació com Claude Code, Codex, Cline, Kilo Code i Continue està en la seva pròpia pàgina: Eines de codificació.

Donar a cada eina la seva pròpia clau

Els agents de codificació fan moltes trucades de model per a una tasca, i una tapa a la clau és la manera més senzilla de saber el màxim que una eina pot gastar.

Obre el SDK

Les biblioteques oficials de Python i JavaScript funcionen sense canvis. base_url a Nymbot i passar la seva clau. Completions de xat, respostes, imatges, àudio i embeddings tots treballen a través d'ells.

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);

Els camps propis de Nymbot, com plugins Per accedir a la web, entreu extra_body en Python i directament a l'objecte de la sol·licitud en JavaScript. nymbot Objecte de cost en una resposta reply.model_extra["nymbot"] En Python i reply.nymbot en JavaScript. Biblioteques que llegeixen el OPENAI_BASE_URL i OPENAI_API_KEY Les variables ambientals es poden apuntar a Nymbot amb aquelles soles.

Antropologia SDK

Les biblioteques antropogèniques utilitzen https://nymbot.ai/api com a URL de base, sense /v1Perquè afegeixen /v1/messages Qualsevol model de catàleg funciona, no només 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);

Ajuts

L'ajudant parla a qualsevol servidor compatible amb OpenAI. Defineix l'URL de base i la clau, i posa openai/ davant del model id de manera que Aider sap quin tipus de servidor és:

Shell

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

L'ajudant pot advertir que no coneix la mida del context o el preu del model. --no-show-model-warnings Ho amaguen

Obert a la web

En Open WebUI, obert Panell d'adminLlavors ConfiguracióLlavors Connexions, i afegir una connexió OpenAI API:

  • La URL: https://nymbot.ai/api/v1
  • Títol: La teva clau

Open WebUI llegeix la llista de models de l'API, de manera que cada model de xat apareix en el seu picker. OPENAI_API_BASE_URL i OPENAI_API_KEY.

Open WebUI manté les vostres converses en el seu propi servidor. Nymbot no les emmagatzema, però Open WebUI ho fa, sigui on l'executeu.

gossos

Córrer goose configureEscolliu Configuració de proveïdorsEl pic obert, i donar-li aquests valors quan se li demani. El mateix es pot establir en l'entorn:

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 crida eines en gairebé cada pas, així que tria un model amb capabilities.tools a la llista de models; nymbot/auto Rebutja els instruments.

Línia HTTP

Res necessita un SDK. Cada punt final és JSON sobre HTTPS, a excepció de les càrregues de fitxers, que són formularis multiparts. Qualsevol idioma o eina que pugui fer una sol·licitud HTTP pot utilitzar l'API:

  • Envia la clau com Authorization: Bearer sk-nymbot-….
  • Enviar cossos JSON amb Content-Type: application/json.
  • Per a streaming, llegiu la resposta com a esdeveniments enviats pel servidor; amb cURL, afegiu -N Així que els imprimeix quan arriben.
  • Llegeix el cost de la X-Nymbot-Cost-Sats Header, i mantenir el X-Request-Id Header si necessiteu demanar una sol·licitud.

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);