Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions env.example
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
# Republic model format: provider:model_id
# Default in code is `openrouter:qwen/qwen3-coder-next`.
# BUB_MODEL=openrouter:qwen/qwen3-coder-next
# API transport: `completion`, `responses`, or `messages`.
# BUB_API_FORMAT=completion
# BUB_MAX_STEPS=50
# BUB_MAX_TOKENS=1024
# BUB_MODEL_TIMEOUT_SECONDS=300
Expand Down
1 change: 1 addition & 0 deletions src/bub/builtin/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ def _build_llm(settings: AgentSettings, tape_store: AsyncTapeStore) -> LLM:
settings.model,
api_key=settings.api_key,
api_base=settings.api_base,
api_format=settings.api_format,
api_key_resolver=api_key_resolver,
tape_store=tape_store,
context=default_tape_context(),
Expand Down
2 changes: 2 additions & 0 deletions src/bub/builtin/settings.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import pathlib
from typing import Literal

from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
Expand All @@ -18,6 +19,7 @@ class AgentSettings(BaseSettings):
model: str = DEFAULT_MODEL
api_key: str | None = None
api_base: str | None = None
api_format: Literal["completion", "responses", "messages"] = "completion"
max_steps: int = 50
max_tokens: int = DEFAULT_MAX_TOKENS
model_timeout_seconds: int | None = None
11 changes: 11 additions & 0 deletions tests/test_builtin_settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from __future__ import annotations

from bub.builtin.settings import AgentSettings


def test_agent_settings_reads_api_format_from_env(monkeypatch) -> None:
monkeypatch.setenv("BUB_API_FORMAT", "responses")

settings = AgentSettings()

assert settings.api_format == "responses"