Skip to content

Integrate Tier 1 AI providers (Groq, DeepSeek, Mistral, xAI, Cerebras) #63

Description

@ralyodio

Background

packages/ai/ has 59 provider adapters. Four are fully integrated (Claude, OpenAI, Gemini, Qwen); 55 are BYOK stubs that only collect an API key. This issue tracks integration of the first tier — the 5 highest-impact stubs.

All five speak the OpenAI Chat Completions protocol, so each is essentially: clone packages/ai/openai/src/index.ts, swap DEFAULT_BASE + defaultModel + the models list + the error label, and confirm an end-to-end call works.

Reference adapter

packages/ai/openai/src/index.ts — copy this shape. Keep tokenSetup() as-is (already wired in each stub).

Providers to integrate

Adapter dir Base URL Default model Suggested models list Env var
packages/ai/groq/ https://api.groq.com/openai llama-3.3-70b-versatile llama-3.3-70b-versatile, llama-3.1-8b-instant, mixtral-8x7b-32768, deepseek-r1-distill-llama-70b GROQ_API_KEY
packages/ai/deepseek/ https://api.deepseek.com deepseek-chat deepseek-chat, deepseek-reasoner DEEPSEEK_API_KEY
packages/ai/mistral/ https://api.mistral.ai mistral-large-latest mistral-large-latest, mistral-small-latest, codestral-latest, ministral-8b-latest MISTRAL_API_KEY
packages/ai/xai/ https://api.x.ai grok-3 grok-3, grok-3-mini, grok-2-latest XAI_API_KEY
packages/ai/cerebras/ https://api.cerebras.ai llama-3.3-70b llama-3.3-70b, llama3.1-8b CEREBRAS_API_KEY

Endpoint path is /v1/chat/completions for all five (same as OpenAI).

Acceptance criteria

  • Each adapter's generate() makes a real HTTP call (no more [stub] log + placeholder return)
  • ctx.dryRun short-circuits before the network call (match openai adapter)
  • Errors include status code + first 200 chars of response body
  • inputTokens / outputTokens populated from data.usage when present
  • pnpm vitest run packages/ai/{groq,deepseek,mistral,xai,cerebras} passes
  • Manual smoke test: sh1pt promote ai setup --platform groq accepts a key, then a minimal generate() call returns text
  • One PR per adapter is fine (preferred), or one bundled PR

Out of scope

  • Tier 2-5 adapters (Together, Fireworks, Perplexity, etc.) — separate issues
  • Streaming responses
  • Tool/function calling

References

  • Reference impl: packages/ai/openai/src/index.ts
  • AI provider interface: packages/core/src/ai.ts
  • Setup helper: packages/core/src/setup.ts (tokenSetup pattern)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions