Pular para o conteúdo
Voltar para Nymbot

Base de conhecimento Desenvolvedores

Ferramentas e SDKs

Qualquer coisa que possa falar com o OpenAI ou o Anthropic pode falar com o Nymbot.Em quase todos os casos, é um URL de base, uma chave e um nome de modelo.

Cada configuração abaixo precisa de uma chave API, feita no aplicativo. Fogo Menu (Veja aqui) Chaves de fogo) e um modelo de ID de A lista de modelosOs exemplos usados anthropic/claude-sonnet-5 É o Pro Balance. nymbot/auto é a escolha mais barata no saldo padrão para chat simples, mas não pode chamar ferramentas, que Goose precisa; para isso, escolha um modelo de catálogo com capabilities.tools.

A configuração para agentes de codificação como Claude Code, Codex, Cline, Kilo Code e Continue está em sua própria página: Ferramentas de codificação.

Dê a cada ferramenta sua própria chave

Criar uma chave separada para cada ferramenta, com um cap. Agentes de codificação fazem muitas chamadas de modelo para uma tarefa, e um cap na chave é a maneira mais simples de saber o máximo que uma ferramenta pode gastar.

Abrir o SDK

As bibliotecas oficiais de Python e JavaScript funcionam inalteradas. base_url Completos de bate-papo, respostas, imagens, áudio e embeddings todos trabalham através deles.

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

Os campos próprios do Nymbot, como plugins Para pesquisar na web, entre extra_body em Python e diretamente no objeto de solicitação em JavaScript. nymbot Objeto de custo em uma resposta reply.model_extra["nymbot"] Em Python e reply.nymbot em JavaScript. bibliotecas que lêem o OPENAI_BASE_URL e OPENAI_API_KEY As variáveis ambientais podem ser apontadas no Nymbot com as únicas.

Antropologia SDK

As bibliotecas antropológicas usam https://nymbot.ai/api como a URL de base, sem /v1Porque eles acrescentam /v1/messages Qualquer modelo de catálogo funciona, não 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);

auxiliares

O assistente fala com qualquer servidor compatível com OpenAI. Defina a URL de base e a chave, e coloque openai/ na frente do modelo id para que o Aider saiba que tipo de servidor é:

Shell

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

O assistente pode alertar que não conhece o tamanho do contexto ou o preço do modelo. --no-show-model-warnings esconde isso

abertura da web

Em Open WebUI, aberta Admin PainelEntão ConfiguraçõesEntão Conexões, e adicione uma conexão OpenAI API:

  • O url: https://nymbot.ai/api/v1
  • Título: Sua chave de API

Open WebUI lê a lista de modelos da API, de modo que cada modelo de bate-papo aparece em seu picker. Quando executado no Docker, o mesmo pode ser definido com as variáveis de ambiente OPENAI_API_BASE_URL e OPENAI_API_KEY.

Open WebUI mantém suas conversas em seu próprio servidor.Nymbot não as armazena, mas Open WebUI faz, onde quer que você as execute.

Goiás

Corrida goose configureEscolha Configurar fornecedoresO Pick abertura, e dê-lhe estes valores quando solicitado. O mesmo pode ser definido no 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 chama ferramentas em quase todos os passos, então escolha um modelo com capabilities.tools Na lista de modelos; nymbot/auto Recusa de ferramentas.

Solução HTTP

Nada precisa de um SDK. Cada endpoint é JSON sobre HTTPS, exceto os upload de arquivos, que são formulários multipartes. Qualquer idioma ou ferramenta que possa fazer uma solicitação HTTP pode usar a API:

  • Envie a chave como Authorization: Bearer sk-nymbot-….
  • Envie corpos JSON com Content-Type: application/json.
  • Para streaming, leia a resposta como eventos enviados pelo servidor; com cURL, adicione -N Então, ele os imprime quando eles chegam.
  • Leia o custo do X-Nymbot-Cost-Sats Header, e mantenha o X-Request-Id Header se você precisar perguntar sobre um pedido.

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