Saltà à u cuntenutu
Torna à Nymbot

Base di cunniscenza Sviluppatori

Strumenti è SDK

Qualche cosa chì pò parlà cù OpenAI o Anthropic pò parlà cù Nymbot. In quasi ogni casu hè un URL di basa, una chìave è un nome di mudellu.

Ogni configurazione sottu hà bisognu di una chìave API, fatta in l'app's API menù (vede Chiavi API), è un id di mudellu da a lista di i mudelliI esempi usanu anthropic/claude-sonnet-5 su u balance Pro. nymbot/auto hè a scelta più economica per u bilanciu standard per a chat semplice, ma ùn pò micca chiamà strumenti, chì Goose ha bisognu; per isso, sceltu un mudellu di catalughe cù capabilities.tools.

A configurazione per l'agenti di programmazione cum'è Claude Code, Codex, Cline, Kilo Code è Continue hè nantu à una pagina dedicata: strumenti di programmazione.

Dà à ogni strumentu a so propria chìave

Fate una chìave separata per ogni strumentu, cù un capu. I agenti di codificazione fàssu assai chiami di mudellu per una sulu task, è un capu nantu à a chìave hè u modu più simplice per sapè u massimu chì un strumentu pò spende. S'un strumentu si comporta male, revucate a so chìave è nenti altrove hè afectatu.

SDK di OpenAI

Ie librerie ufficiali di Python è di JavaScript funzionanu senza cambiamenti. Puntu base_url à Nymbot è passate a vostra chìave. Chat Completions, Responses, images, audio è embeddings tutti funzionanu però di meanzu à elli.

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

I campi di Nymbot stessu, cum'è plugins per a ricerca web, andate in extra_body in Python è diritta in l'oggettu di richiesta in JavaScript. U nymbot u prezzu di un oggettu in una risposta hè reply.model_extra["nymbot"] in Python è reply.nymbot in JavaScript. Librerie chì leggenu u OPENAI_BASE_URL è OPENAI_API_KEY le variabili d'ambiente ponu esse puntate versu Nymbot solu cù quelle.

SDK di Anthropic

I libreria Anthropic usanu https://nymbot.ai/api cum'è l'URL di base, senza /v1, perchè elli aghjunghjanu /v1/messages elli stessi. Qualunque mudellu di u catalugiu funziona, micca solu 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);

Aiutà

Aider parla cù qualsiasi server compatibile cù OpenAI. Impostate l'URL di base è a chìave, è mettete openai/ fronte à l'ID di u mudellu per ch'Aider sappi quale tipu di servitore hè:

Shell

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

Aider pò avvisà chì ùn conosce micca a dimensione di u cuntestu o u prezzu di u mudellu. L'avvisu hè innocu; --no-show-model-warnings u nasconde.

Open WebUI

In Open WebUI, apre Pannellu d'Amministrazione, dopu Impostazioni, dopu Connessioni, è aghjungi una cunnessione à l'API di OpenAI:

  • URL: https://nymbot.ai/api/v1
  • Chjave: a vostra chjave API

Open WebUI ritoglia a lista di i mudelli da l'API, dunque ogni mudellu di chat appare in u so selezionatore. Quandu u runite in Docker, u stessu pò esse settu cù e variabili d'ambiente OPENAI_API_BASE_URL è OPENAI_API_KEY.

Open WebUI mantiene i vostri conversazioni nantu à u so servitore proprietariu. Nymbot ùn e stocca micca, ma Open WebUI sì, ovunque u runite.

Oca

Corre goose configure, scegli Configurate i Fornitore, pigghia OpenAI, è dacci sti valori quandu si dumanda. A stessa cosa pò esse setata in l'ambiente:

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 chjamate i strumenti in quasi ogni passi, dunque scigliete un mudellu cù capabilities.tools in a lista di i mudelli; nymbot/auto rifiuta i strumenti.

HTTP simplici

Niente hà bisognu di un SDK. Ogni endpoint hè JSON sopra HTTPS, eccettu i caricamenti di file, chì sò forme multipart. Qualsiasi linguaghju o strumentu chì pò fà una richiesta HTTP pò usà l'API:

  • Mandate a chìave cum'è Authorization: Bearer sk-nymbot-….
  • Mandate i corpi JSON cù Content-Type: application/json.
  • Per u streaming, legge a risposta cum'è eventi mandati dal server; cu cURL, aghjungi -N quindi ellu i stampa mancu appena arrivanu.
  • Leggi u prezzu da u X-Nymbot-Cost-Sats testata, è mantene u X-Request-Id testata s'avete bisognu di dumandà nantu à una dumanda.

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