Módulos

Dev Copilot

Assistente IA powered by Claude com contexto Arc blockchain embutido.

O DevCopilot é um assistente IA com contexto completo da blockchain Arc embutido no system prompt. Responde perguntas, gera código, explica conceitos do ecossistema Circle — sem configuração extra além de uma chave de API.

Backend multi-provedor

O DevCopilot é alimentado por um provedor de LLM plugável, selecionado globalmente via COPILOT_PROVIDER no .env:

COPILOT_PROVIDER=anthropic   # padrão — requer ANTHROPIC_API_KEY
# COPILOT_PROVIDER=gemini    # pip install arc-devkit[gemini] — requer GEMINI_API_KEY, GEMINI_MODEL
# COPILOT_PROVIDER=openai    # pip install arc-devkit[openai] — requer OPENAI_API_KEY, OPENAI_MODEL
# COPILOT_PROVIDER=ollama    # local, sem API key — requer OLLAMA_MODEL (já baixado) e um servidor Ollama rodando

ask(), ask_stream(), histórico, cache, modo offline e anexos de imagem funcionam identicamente nos quatro provedores — o código desta página não muda dependendo de qual está ativo. Nenhum nome de modelo é adivinhado para Gemini/OpenAI/Ollama: GEMINI_MODEL/OPENAI_MODEL/OLLAMA_MODEL precisam ser definidos explicitamente, já que um default hardcoded poderia silenciosamente apontar para um modelo descontinuado ou inexistente.

⚠Modo agentic com tools é exclusivo do Anthropic

run_agent() (o loop de tool-use somente leitura usado por arc ask --agent) levanta NotImplementedError para qualquer provedor que não seja anthropic — cada provedor tem um schema de tool-calling incompatível que ainda não foi implementado.

Instalação e importação

from arc_devkit.copilot.agent import DevCopilot

Uso básico

copilot = DevCopilot()

# Pergunta simples
answer = copilot.ask("What is the gas cost in USDC for a transfer on Arc?")
print(answer)

Streaming

Receba tokens à medida que o modelo os gera:

for chunk in copilot.ask_stream("Write a recurring payment agent in Python"):
    print(chunk, end="", flush=True)

Conversa multi-turn

O histórico é mantido em memória por instância:

copilot.ask("What is Circle CCTP?")
copilot.ask("Show me a Python example of a cross-chain USDC transfer")
# O contexto da primeira pergunta está disponível na segunda

Imagens como contexto

Suporte a PNG, JPEG, GIF e WebP:

answer = copilot.ask(
    "What does this error mean?",
    image_path="screenshot.png"
)

Contagem de tokens

Estime o custo antes de fazer a chamada (sem custo de API):

tokens = copilot.count_tokens("Explain how Malachite consensus works")
print(f"~{tokens} tokens")

Modo offline

Útil em CI/CD ou ambientes sem chave de API:

copilot = DevCopilot(offline=True)
response = copilot.ask("anything")
# → "[Offline mode] Arc DevKit is running in offline mode."

Contexto customizado

Injete descrição do seu projeto ou ABI de contrato:

copilot = DevCopilot(
    extra_context="This project uses a custom USDC vault at 0xABC..."
)

Referência da API

DevCopilot(offline=False, extra_context=None)

ParâmetroTipoDescrição
offlineboolSe True, retorna resposta estática sem chamar a API
extra_contextstr | NoneContexto adicional injetado no system prompt

ask(prompt, image_path=None)

ParâmetroTipoDescrição
promptstrPergunta ou instrução para o modelo
image_pathstr | NoneCaminho para imagem a ser enviada como contexto

Retorna: str — resposta completa do modelo.

ask_stream(prompt, image_path=None)

Retorna: Generator[str, None, None] — chunks de texto conforme o modelo gera.

count_tokens(prompt)

Retorna: int — estimativa de tokens sem fazer chamada de geração.

Features

FeatureDescrição
Cache5 minutos de TTL por hash MD5 do prompt + modelo
Históricoself.history — lista de mensagens da conversa atual
Token loggingUso de tokens logado em cada chamada (DEBUG)
Provedor configurávelCOPILOT_PROVIDER env var (padrão: anthropic)
Modelo configurávelenv var *_MODEL de cada provedor (ex.: ANTHROPIC_MODEL, padrão: claude-sonnet-4-6)

✦Uma instância por sessão

DevCopilot é instanciado por chamada — não é um singleton. Se quiser histórico contínuo, mantenha a mesma instância durante a sessão.