Skip to content

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

@ralyodio

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions