Skip to content

feat(agent): pluggable LLM provider (openai / gemini)#264

Open
nghiadaulau wants to merge 1 commit into
VersusControl:mainfrom
nghiadaulau:feat/agent-ai-provider
Open

feat(agent): pluggable LLM provider (openai / gemini)#264
nghiadaulau wants to merge 1 commit into
VersusControl:mainfrom
nghiadaulau:feat/agent-ai-provider

Conversation

@nghiadaulau

Copy link
Copy Markdown
Member

What

Replaces the verbose agent.ai.base_url (#245) with a friendly agent.ai.provider enum — openai (default) or gemini — so operators pick a short name instead of a long URL.

config.ProviderBaseURL(provider) maps the provider to its OpenAI-compatible chat-completions endpoint internally (both backends are OpenAI-compatible, so only the base URL changes). Wired through detect + analyze (with a per-task agent.ai.analyze.provider override), config.yaml (env AGENT_AI_PROVIDER), and the Helm chart. Empty = openai, so existing deployments are unchanged.

agent:
  ai:
    enable: true
    provider: gemini              # openai | gemini
    model: gemini-2.5-flash-lite
    api_key: ${AGENT_AI_API_KEY}

Why

base_url meant pasting a long endpoint (https://generativelanguage.googleapis.com/v1beta/openai). A provider name is shorter, less error-prone and self-documenting; adding a backend is one case in ProviderBaseURL.

Supersedes #245

Same goal (bring-your-own LLM / Gemini), cleaner surface — closing #245 in favour of this.

Verified

  • go test ./pkg/config/... — provider→endpoint map + per-task override.
  • helm lint clean; helm template --set agent.ai.provider=gemini renders provider: "gemini" with no base_url.
  • Runtime path is identical to the previously-verified base_url wiring (the OpenAI-compatible URL now comes from ProviderBaseURL), which ran the full detect → Gemini → Telegram loop on minikube.

🤖 Generated with Claude Code

Add agent.ai.provider — "openai" (default) or "gemini" — instead of a raw
base_url. ProviderBaseURL maps the provider to its OpenAI-compatible chat
endpoint internally (both backends are OpenAI-compatible, so only the base
URL changes), so operators pick a short name instead of a long URL. Wired
through detect + analyze (per-task agent.ai.analyze.provider override),
config.yaml (env AGENT_AI_PROVIDER) and the Helm chart. Empty = openai, so
existing deployments are unchanged.

Supersedes VersusControl#245 (base_url).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant