Skip to content

Commit 577fce2

Browse files
feat(demo): enforce explicit API keys in demo and clean up sample .env
1 parent 89619e1 commit 577fce2

3 files changed

Lines changed: 15 additions & 12 deletions

File tree

‎README.md‎

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,21 +100,18 @@ cp .env.example .env
100100

101101
Edit `.env`:
102102
```ini
103-
ENVIRONMENT=development
104-
LOG_LEVEL=INFO
105-
106103
# LLM Providers (at least one key or use offline mode)
107104
LLM_PROVIDER=gemini
105+
LLM_MODEL=gemini-2.0-flash
108106
GEMINI_API_KEY=your_gemini_api_key_here
109107
OPENAI_API_KEY=your_openai_api_key_here
110108

111109
# Persistence
112110
DATABASE_URL=postgresql+asyncpg://agentkit:agentkit_password@localhost:5432/agentkit
113111
REDIS_URL=redis://localhost:6379/0
114112

115-
# Security
116-
API_KEYS=dev_key_1,dev_key_2
117-
JWT_SECRET=super_secret_jwt_key_at_least_32_bytes_long
113+
# Security (comma-separated authorized keys)
114+
API_KEYS=ak_test_key_12345,ak_admin_key_67890
118115
```
119116

120117
### 4. Running with Docker Compose (Recommended)

‎examples/demo.py‎

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,17 +144,24 @@ def build_fake_llm() -> LLMClient:
144144

145145

146146
def build_llm(offline: bool, provider: str) -> LLMClient:
147-
"""Resolve the LLM client, degrading to the scripted fake when no key is present."""
147+
"""Resolve the LLM client, requiring valid API keys unless running in offline/fake mode."""
148148
if offline or provider == "fake":
149149
return build_fake_llm()
150150

151151
settings = get_settings()
152152
key_present = settings.GEMINI_API_KEY if provider == "gemini" else settings.OPENAI_API_KEY
153153
if not key_present:
154-
logger.warning("No API key for provider '%s'; falling back to FakeLLMClient.", provider)
155-
return build_fake_llm()
154+
key_name = "GEMINI_API_KEY" if provider == "gemini" else "OPENAI_API_KEY"
155+
raise ValueError(
156+
f"API key for provider '{provider}' is missing ({key_name} is not set). "
157+
f"To run offline without real API credentials, pass --offline or --provider fake."
158+
)
156159

157-
return create_llm_client(provider)
160+
return create_llm_client(
161+
provider=provider,
162+
api_key=key_present,
163+
model=settings.LLM_MODEL,
164+
)
158165

159166

160167
async def run_demo(

‎tests/integration/test_demo.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ async def test_demo_script_runner() -> None:
143143

144144
def test_build_llm_strict_live_mode(monkeypatch: pytest.MonkeyPatch) -> None:
145145
"""Verify build_llm requires API keys when live provider is requested without --offline."""
146-
from examples.demo import build_llm
147146
from agentkit.config import get_settings
147+
from examples.demo import build_llm
148148

149149
monkeypatch.setenv("GEMINI_API_KEY", "")
150150
monkeypatch.setenv("OPENAI_API_KEY", "")
@@ -163,4 +163,3 @@ def test_build_llm_strict_live_mode(monkeypatch: pytest.MonkeyPatch) -> None:
163163

164164
fake_client_fake_prov = build_llm(offline=False, provider="fake")
165165
assert isinstance(fake_client_fake_prov, FakeLLMClient)
166-

0 commit comments

Comments
 (0)