Saltar para o conteúdo principal

Catálogo de fornecedores

Guia da API Moonshot Kimi

Utilize o endpoint partilhado de conclusão de conversas para clientes com os identificadores de modelos Moonshot Kimi e a disponibilidade do serviço atualmente publicados.

Fluxo de trabalho
  1. Escolher o produto de APIDistinga os pedidos de inferência dos fluxos de treino de modelos.
  2. Consultar o contratoUtilize a documentação da API e a referência OpenAPI correspondentes.
  3. Criar uma chave com âmbito definidoGere e guarde em segurança uma chave de API de cliente.
  4. Integrar e verificarEnvie um pedido documentado e analise a resposta.
  5. Monitorizar e rodar as chavesConsulte a utilização e revogue ou rode as chaves quando necessário.

Modelos Moonshot Kimi publicados

Os nomes, identificadores exatos de encaminhamento, versões e estados de inferência são apresentados a partir do registo de modelos ativo, quando disponível. Um identificador em branco significa que o catálogo não publicou um valor de encaminhamento; não o deduza a partir do nome do modelo.

Programador
Moonshot AI
Acesso para novos clientes
Disponível
Nome do modeloIdentificador exato do modeloVersãoEstado da inferência
Kimi K3.1 Pro kimi-k3.1-pro — Ativo · Disponível para inferência
Kimi K3.1 Pro Highspeed kimi-k3.1-pro-highspeed — Ativo · Disponível para inferência
Kimi K3 Não foi publicado nenhum identificador de encaminhamento — Sem um identificador público de encaminhamento, não é possível confirmar a disponibilidade para chamadas diretas.
Kimi K2.7 Code Não foi publicado nenhum identificador de encaminhamento — Sem um identificador público de encaminhamento, não é possível confirmar a disponibilidade para chamadas diretas.
Kimi K2.6 Não foi publicado nenhum identificador de encaminhamento — Sem um identificador público de encaminhamento, não é possível confirmar a disponibilidade para chamadas diretas.
Kimi K2.5 Não foi publicado nenhum identificador de encaminhamento — Sem um identificador público de encaminhamento, não é possível confirmar a disponibilidade para chamadas diretas.

Utilizar este fornecedor

  • Escolha um modelo pelo identificador exato e confirme o respetivo estado antes de configurar uma aplicação. O nome de apresentação destina-se às pessoas; no campo do modelo, só deve utilizar o identificador.
  • Cada página de fornecedor apresenta exemplos compatíveis com OpenAI e Claude Messages. Escolha o protocolo usado pelo cliente; o modelo selecionado também tem de suportar as funcionalidades pedidas.
  • Se o serviço estiver disponível apenas para clientes existentes, mantenha o acesso da conta existente e não interprete a lista de modelos publicada como um convite para iniciar uma nova subscrição.

Exemplos de API para modelos

Escolha um identificador de modelo publicado, protocolo de API e idioma para ver um exemplo de pedido. Mantenha as chaves de API dos clientes num servidor de confiança.

Requisitos do protocolo

Os pedidos compatíveis com OpenAI usam POST /chat/completions no URL base de API do cliente configurado (por predefinição https://fusionpointai.com/api/v1). Autentique com Authorization: Bearer e uma chave de cliente com acesso à inferência. O URL completo predefinido é https://fusionpointai.com/api/v1/chat/completions.

Capacidades suportadas

O endpoint atual de chat compatível com OpenAI processa mensagens de texto síncronas. Este endpoint não suporta streaming nem chamadas a ferramentas.

Instalar um cliente

Instale os clientes de Python e Node.js como pacotes separados:

Python: pip install openai anthropic

Node.js: npm install openai @anthropic-ai/sdk

cURL
curl 'https://fusionpointai.com/api/v1/chat/completions' \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "model": "kimi-k3.1-pro",
    "messages": [
        {
            "role": "user",
            "content": "Summarize this in one sentence."
        }
    ],
    "temperature": 0.7,
    "max_tokens": 300
}'

Padrões de pedido

Configurar chaves de API em segurança

Crie uma chave de API de cliente com acesso à inferência e disponibilize-a a um processo no servidor através do gestor de segredos ou do ambiente.

  1. Defina FUSIONPOINTAI_API_KEY no ambiente do servidor; não inclua a chave no código do browser nem a submeta no controlo de versões.
  2. Use HTTPS e limite a chave à conta e às permissões de inferência necessárias à aplicação.
  3. Oculte os cabeçalhos authorization e x-api-key em registos, rastos e pedidos de suporte; revogue uma chave se puder ter sido exposta.
Bash
export FUSIONPOINTAI_API_KEY="YOUR_CUSTOMER_API_KEY"

Selecionar um identificador exato de modelo

O campo model é um valor de encaminhamento, não um rótulo de apresentação. Escolha um identificador publicado no catálogo atual de modelos.

  1. Selecione um modelo ativo ou legado marcado como disponível para inferência.
  2. Copie o identificador exatamente, incluindo pontuação e sufixos de versão; nunca o deduza do nome do modelo.
  3. Se não houver identificador publicado, aguarde que o catálogo o forneça em vez de adivinhar um valor.
Python
model_id = "kimi-k3.1-pro"
# Use this exact identifier with either protocol.

Enviar mensagens de sistema e de várias interações

Mantenha as mensagens da conversa pela ordem original e use apenas as funções e estruturas de conteúdo suportadas pelo protocolo e modelo selecionados.

  1. Nos pedidos compatíveis com OpenAI, envie mensagens system, user e assistant ordenadas, com conteúdo em texto.
  2. Em Claude Messages, envie a instrução de sistema suportada e os turnos user/assistant ordenados nos campos nativos do protocolo.
  3. Conserve apenas o contexto de conversa necessário à aplicação e respeite os limites de contexto do modelo.
Python
response = client.messages.create(
    model="kimi-k3.1-pro",
    max_tokens=512,
    system="Answer in clear, concise German.",
    messages=[
        {"role": "user", "content": "What is an API?"},
        {"role": "assistant", "content": "An API lets software exchange requests and responses."},
        {"role": "user", "content": "Give a practical example."},
    ],
)
for block in response.content:
    if block.type == "text":
        print(block.text)

Pedir respostas JSON

Quando a aplicação precisar de saída estruturada, valide a resposta face ao seu próprio esquema antes de a utilizar.

  1. Use os controlos de saída estruturada suportados pelo protocolo escolhido e pelo modelo upstream selecionado.
  2. Trate o JSON gerado como entrada não fiável: analise-o, valide campos e tipos obrigatórios e trate saídas inválidas.
  3. Não presuma que uma combinação de modelo e protocolo suporta modo JSON sem confirmação na documentação do modelo.
Python
import json

# JSON is generated content, not trusted application input.
response = client.messages.create(
    model="kimi-k3.1-pro", max_tokens=256,
    messages=[{"role": "user", "content": 'Return only JSON with a string field named "summary". Explain an API in one sentence.'}],
)
text = "".join(block.text for block in response.content if block.type == "text")
try:
    result = json.loads(text)
    if not isinstance(result, dict) or not isinstance(result.get("summary"), str):
        raise ValueError("Unexpected response schema")
    print(result["summary"])
except (json.JSONDecodeError, ValueError) as error:
    print("Handle invalid model output:", error)

Receber saída SSE em tempo real

O streaming depende do protocolo e do modelo upstream selecionados; uma resposta JSON normal não é um fluxo.

  1. O chat compatível com OpenAI devolve atualmente texto síncrono e não fornece streaming.
  2. Em Claude Messages, use o modo stream quando o modelo upstream o suportar; o proxy encaminha eventos nativos enviados pelo servidor.
  3. Consuma eventos à medida que chegam, termine corretamente ao concluir ou ocorrer um erro e não trate saída parcial como resposta completa.
Python
# client is the Anthropic client configured above.
with client.messages.stream(
    model="kimi-k3.1-pro", max_tokens=512,
    messages=[{"role": "user", "content": "Explain API authentication."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    final_message = stream.get_final_message()
print("\nStop reason:", final_message.stop_reason)

Tratar ferramentas, blocos de conteúdo e erros

Mantenha intactas as estruturas nativas do protocolo e defina explicitamente o comportamento da aplicação para chamadas a ferramentas, conteúdo multimodal e falhas.

  1. O chat compatível com OpenAI não suporta atualmente chamadas a ferramentas nem blocos de conteúdo não textual.
  2. Claude preserva blocos nativos e dados de utilização/resultados de ferramentas quando o modelo upstream os suporta; valide nomes e argumentos antes de executar ferramentas.
  3. Verifique o estado HTTP e o corpo da resposta, distinga falhas de autenticação, permissão, validação e limite e repita erros transitórios com espera crescente.
Python
import json
from datetime import datetime, timezone
from anthropic import APIError

messages = [{"role": "user", "content": "What time is it in UTC?"}]
tools = [{
    "name": "current_utc_time", "description": "Read the current UTC time.",
    "input_schema": {"type": "object", "properties": {}, "additionalProperties": False},
}]
try:
    reply = client.messages.create(model="kimi-k3.1-pro", max_tokens=256, messages=messages, tools=tools)
    results = []
    for block in reply.content:
        if block.type == "tool_use":
            if block.name != "current_utc_time" or block.input != {}:
                raise ValueError("Unapproved tool request")
            results.append({"type": "tool_result", "tool_use_id": block.id,
                            "content": json.dumps({"utc": datetime.now(timezone.utc).isoformat()})})
    if results:
        messages.append({"role": "assistant", "content": reply.content})
        messages.append({"role": "user", "content": results})
        reply = client.messages.create(model="kimi-k3.1-pro", max_tokens=256, messages=messages, tools=tools)
    print("".join(block.text for block in reply.content if block.type == "text"))
except APIError as error:
    # Log status only; never log keys or private prompts.
    print("API request failed:", getattr(error, "status_code", None))

Perguntas frequentes

Posso usar o nome apresentado do modelo num pedido?

Use apenas o identificador exato publicado para inferência. O nome apresentado não é um valor de encaminhamento e nunca deve adivinhar um identificador não publicado.

Que variável de ambiente contém a chave do cliente?

Use FUSIONPOINTAI_API_KEY nos dois protocolos. Mantenha o valor num ambiente de servidor de confiança, fora do código cliente e dos registos.

Que URL deve usar o cliente OpenAI?

Use o URL base configurado para a API do cliente, cujo valor predefinido é https://fusionpointai.com/api/v1. O endpoint de chat acrescenta /chat/completions.

Porque difere o URL base do Claude SDK do usado em cURL?

O Anthropic SDK acrescenta /v1/messages; defina o URL base como https://fusionpointai.com/api. Um pedido HTTP direto usa o URL completo /api/v1/messages.

O chat compatível com OpenAI suporta streaming ou ferramentas?

Não. O endpoint atual suporta apenas mensagens de texto síncronas; streaming e chamadas a ferramentas não estão disponíveis.

Todos os modelos Claude suportam blocos, ferramentas ou streaming?

Não. Estas funcionalidades nativas são preservadas quando o modelo upstream selecionado as suporta. Consulte as capacidades do modelo e trate pedidos não suportados.

Claude Messages · POST /messages

Os pedidos Claude Messages usam POST /api/v1/messages. Envie a chave do cliente em x-api-key e defina anthropic-version como 2023-06-01. O URL base do Anthropic SDK é https://fusionpointai.com/api, porque o SDK acrescenta /v1/messages; também é suportada autenticação bearer.

O proxy Claude Messages preserva blocos de conteúdo nativos, dados de ferramentas e streaming real de eventos enviados pelo servidor quando o modelo upstream selecionado os suporta.

CampoTipoObrigatórioRestrições
model string Sim {"minLength":1,"maxLength":160}
max_tokens integer Sim {"minimum":1,"maximum":100000}
messages array Sim {"minItems":1,"maxItems":100,"items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["user","assistant"]},"content":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object","required":["type"],"properties":{"type":{"type":"string","maxLength":80}},"additionalProperties":true}}]}}}}
system string | array Não {"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object","required":["type","text"],"properties":{"type":{"const":"text"},"text":{"type":"string"}},"additionalProperties":true}}]}
stream boolean Não {"default":false}
temperature number Não {"minimum":0,"maximum":1}
top_p number Não {"minimum":0,"maximum":1}
top_k integer Não {"minimum":0,"maximum":100000}
stop_sequences array Não {"items":{"type":"string"}}
tools array Não {"items":{"type":"object","additionalProperties":true}}
tool_choice object Não {"additionalProperties":true}
thinking object Não {"additionalProperties":true}
metadata object Não {"additionalProperties":true}
output_config object Não {"additionalProperties":true}
service_tier string Não []
Claude Messages · Exemplo
{
    "id": "msg_example",
    "type": "message",
    "role": "assistant",
    "model": "kimi-k3.1-pro",
    "content": [
        {
            "type": "text",
            "text": "A concise answer to the supplied question."
        }
    ],
    "stop_reason": "end_turn",
    "stop_sequence": null,
    "usage": {
        "input_tokens": 12,
        "output_tokens": 10
    }
}
{"type":"error","error":{"type":"authentication_error","message":"Invalid or missing API key."}}

Faça o seu primeiro pedido

Envie pedidos HTTPS para o URL base abaixo. Use POST /chat/completions para chat de texto compatível com OpenAI ou POST /messages para Claude Messages. Selecione o protocolo na área de trabalho de modelos e use o URL e o formato JSON exatos correspondentes.

URL base da API: https://fusionpointai.com/api/v1

Crie ou faça a gestão de uma chave de API de cliente nas definições de chaves de API da sua conta. Envie-a como token bearer e guarde-a num servidor de confiança; não a inclua em código do browser, no controlo de versões ou em registos públicos.

A chave necessita do âmbito ai:inference e de acesso à subscrição de cliente relevante. A chave de API pública não é uma palavra-passe da conta e não deve ser partilhada.

Estes exemplos utilizam o ponto de acesso registado de conclusão de conversas JSON e os clientes Python e Node.js compatíveis com OpenAI. Guarde a chave na variável de ambiente FUSIONPOINTAI_API_KEY. Substitua o valor do modelo apenas por um identificador exato listado acima.

Shell
# Install the client for your application language.
# Python:
python -m pip install openai
# Node.js:
npm install openai

# Bash: enter the key without storing it in shell history.
read -rs -p 'FusionPointAI API key: ' FUSIONPOINTAI_API_KEY
export FUSIONPOINTAI_API_KEY
printf '\n'
# After finishing:
# unset FUSIONPOINTAI_API_KEY
cURL — Exemplo
curl 'https://fusionpointai.com/api/v1/chat/completions' \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "model": "kimi-k3.1-pro",
    "messages": [
        {
            "role": "user",
            "content": "Summarize this in one sentence."
        }
    ],
    "temperature": 0.7,
    "max_tokens": 300
}'
Python — Exemplo
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["FUSIONPOINTAI_API_KEY"],
    base_url="https://fusionpointai.com/api/v1",
)

response = client.chat.completions.create(
    model="kimi-k3.1-pro",
    messages=[{"role": "user", "content": "Summarize this in one sentence."}],
    temperature=0.7,
    max_tokens=300,
)
print(response.choices[0].message.content)
Node.js — Exemplo
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.FUSIONPOINTAI_API_KEY,
  baseURL: "https://fusionpointai.com/api/v1",
});

const response = await client.chat.completions.create({
  model: "kimi-k3.1-pro",
  messages: [{ role: "user", content: "Summarize this in one sentence." }],
  temperature: 0.7,
  max_tokens: 300,
});
console.log(response.choices[0].message.content);

OpenAI · Contrato dos pedidos e das respostas

O ponto de acesso aceita JSON. As mensagens são enviadas pela ordem indicada; cada mensagem tem uma função suportada e conteúdo em formato de texto. Os controlos opcionais de geração têm de respeitar os limites de validação abaixo. A resposta é um objeto JSON chat.completion com choices e, quando fornecida pelo fornecedor, utilização de tokens.

CampoTipoObrigatórioRestrições
modelstringSimTexto com, no máximo, 160 caracteres; utilize um identificador publicado.
messagesarraySimMatriz com 1 a 100 mensagens.
messages[].rolestringSimCada função é system, user ou assistant.
messages[].contentstringSimO conteúdo de cada mensagem é texto com até 100 000 caracteres.
temperaturenumberNãoNúmero opcional entre 0 e 2.
max_tokensintegerNãoNúmero inteiro opcional entre 1 e 100 000; o modelo selecionado pode impor um limite de saída inferior.

Estrutura da resposta

Uma resposta bem-sucedida contém id, object (chat.completion), created, model e choices. Uma opção contém o respetivo índice, uma mensagem assistant e finish_reason. A utilização pode incluir contagens de tokens. Podem aplicar-se limites específicos do fornecedor, mesmo que o pedido passe a validação do gateway.

Exemplo · JSON
{
    "id": "chatcmpl_example",
    "object": "chat.completion",
    "created": 1700000000,
    "model": "kimi-k3.1-pro",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "A concise summary of the supplied text."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 12,
        "completion_tokens": 10,
        "total_tokens": 22
    }
}

Acesso, limites e utilização segura

As subscrições de clientes em produção não contabilizam os pedidos nem a utilização de tokens face a uma quota; as chaves sandbox estão limitadas à franquia mensal publicada. Esta informação sobre a subscrição é independente dos limites técnicos do modelo e dos sistemas a montante.

  • As janelas de contexto dos modelos, o tamanho máximo da saída, as funcionalidades de pedido suportadas e os controlos temporários de tráfego a montante variam. Consulte as informações do fornecedor e do modelo antes de enviar tráfego de produção.
  • O ponto de acesso aplica um limite de 60 pedidos por minuto por identidade de limitação aplicável. HTTP 429 também pode indicar controlos temporários de tráfego a montante; volte a tentar com intervalos crescentes, em vez de repetir pedidos continuamente.
  • Utilize HTTPS, mantenha as chaves no servidor, conceda apenas o âmbito de inferência necessário e revogue rapidamente uma chave se houver suspeita de exposição.
  • Chat Completions suporta texto síncrono. Claude Messages suporta separadamente blocos de conteúdo nativos, ferramentas e SSE quando permitidos pelo modelo selecionado. Outros pontos de acesso de fornecedores não fazem parte destes contratos.

Acesso ao fornecedor e requisitos da conta

Autentique-se com uma chave de API de cliente que tenha o âmbito ai:inference e pertença a uma conta com acesso a este serviço. O catálogo indica se são atualmente aceites novos clientes. Não concede acesso, não cria uma subscrição nem substitui as permissões da conta ou da chave.

Erros e resolução de problemas

As falhas de validação e os resultados inutilizáveis do fornecedor devolvidos pelo ponto de acesso usam um objeto de erro JSON com message, type e code; as falhas de validação também podem incluir detalhes do campo. Não envie chaves de API nem conteúdo privado dos prompts nos pedidos de suporte.

As falhas de validação do pedido e do fornecedor devolvidas pela operação de conversação usam um objeto de erro. O middleware de autenticação, âmbito e limitação pode, em alternativa, devolver um campo message no nível superior. Consulte em conjunto o estado e o corpo da resposta.

Estado HTTPSignificado e ação seguinte
400Corpo do pedido inválido. Verifique os campos obrigatórios, o número e o conteúdo das mensagens, os valores das funções, temperature e max_tokens.
401Chave bearer em falta ou inválida. Confirme que a chave está ativa e é enviada no cabeçalho Authorization.
403A chave pode não ter o âmbito de inferência ou o acesso à conta necessários. Verifique as permissões da chave e o acesso à subscrição.
429Foi aplicado um limite de pedidos ou um controlo de tráfego a montante. Reduza o ritmo e volte a tentar com intervalos exponenciais.
500O fornecedor não devolveu uma conclusão utilizável ou ocorreu uma falha no serviço. Volte a tentar com prudência; se contactar o suporte, indique a hora e um identificador do pedido sem dados sensíveis.

Perguntas frequentes

Posso utilizar o nome de apresentação como valor do modelo?

Só se essa cadeia exata também tiver sido publicada como identificador de encaminhamento. Utilize a coluna do identificador; se estiver em branco, não foi publicado aqui nenhum valor de encaminhamento.

Posso usar o Claude SDK?

Sim. Escolha Claude na área de trabalho de modelos e use o Anthropic SDK com o URL base apresentado. Envia pedidos nativos Messages, não Chat Completions. Aplicam-se as capacidades específicas do modelo.

Porque poderá falhar um modelo listado?

O modelo pode estar indisponível, o acesso pode não estar ativo para a sua conta ou chave, ou pode aplicar-se um limite técnico a montante. Verifique o estado, o identificador, o âmbito da chave e a resposta de erro.

Que informações devo incluir num pedido de suporte?

Indique o fornecedor, o identificador exato do modelo, a hora do pedido, o estado HTTP e um ID de pedido sem dados sensíveis. Remova as chaves de API e os dados sensíveis dos prompts.