Skip to content

Commit d5e8073

Browse files
committed
Switch AI generation from Anthropic to OpenAI (o3)
1 parent 99113c7 commit d5e8073

4 files changed

Lines changed: 47 additions & 42 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ dependencies = [
2323
"fastapi[all]",
2424
"uvicorn",
2525
"jinja2",
26-
"anthropic",
26+
"openai",
2727
]
2828

2929
[project.optional-dependencies]

src/kernelbot/env.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
env.DATABASE_URL = os.getenv("DATABASE_URL")
4141
env.DISABLE_SSL = os.getenv("DISABLE_SSL")
4242

43-
# Anthropic API key for AI kernel generation
44-
env.ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
43+
# OpenAI API key for AI kernel generation
44+
env.OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
4545

4646

4747
def init_environment(skip_discord: bool = False):

src/libkernelbot/ai_generate.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import re
22

3-
import anthropic
3+
from openai import AsyncOpenAI
44

55
from libkernelbot.consts import Language
66
from libkernelbot.task import LeaderboardTask
@@ -15,7 +15,7 @@ async def generate_kernel(
1515
description: str,
1616
templates: dict[str, str],
1717
) -> tuple[str, str]:
18-
"""Generate kernel code from a natural language prompt using Claude.
18+
"""Generate kernel code from a natural language prompt using OpenAI.
1919
2020
Args:
2121
prompt: The user's natural language description of the kernel to generate.
@@ -51,15 +51,17 @@ async def generate_kernel(
5151

5252
system_prompt = "\n\n".join(system_parts)
5353

54-
client = anthropic.AsyncAnthropic()
55-
response = await client.messages.create(
56-
model="claude-sonnet-4-20250514",
57-
max_tokens=4096,
58-
system=system_prompt,
59-
messages=[{"role": "user", "content": prompt}],
54+
client = AsyncOpenAI()
55+
response = await client.chat.completions.create(
56+
model="o3",
57+
max_completion_tokens=4096,
58+
messages=[
59+
{"role": "system", "content": system_prompt},
60+
{"role": "user", "content": prompt},
61+
],
6062
)
6163

62-
raw = response.content[0].text
64+
raw = response.choices[0].message.content
6365

6466
# Extract code from a fenced code block if present
6567
match = re.search(r"```(?:\w+)?\n(.*?)```", raw, re.DOTALL)

uv.lock

Lines changed: 33 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)