mirror of
https://github.com/trailofbits/buttercup
synced 2026-06-21 14:11:39 +00:00
feat(llm): bump seed-gen and patcher agents to newest models
Tier-preserving upgrade onto the models added in #544: - seed-gen: primary claude-4.5-sonnet -> claude-4.6-sonnet; fallbacks collapsed to openai-gpt-5.5, gemini-pro (dropped redundant claude-4-sonnet now that claude-4.6-sonnet is primary). - patcher (SWE, RootCause, Reflection, ContextRetriever, code-snippet helper): primary openai-gpt-4.1 -> openai-gpt-5.5; ContextRetriever cheap tier openai-gpt-4.1-mini -> openai-gpt-5.4-mini; fallback claude-4.5-sonnet -> claude-4.6-sonnet. gemini-pro left as-is. Validated together with the litellm temperature fix in this PR via the Docker e2e on example-libpng: seed-gen on claude-4.6-sonnet and patcher on openai-gpt-5.5 both run healthy LLM turns with no errors. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -434,8 +434,8 @@ def _create_understand_code_snippet_chain() -> Runnable:
|
||||
return (
|
||||
UNDERSTAND_CODE_SNIPPET_PROMPT
|
||||
| create_default_llm_with_temperature(
|
||||
model_name=ButtercupLLM.OPENAI_GPT_4_1.value,
|
||||
fallback_models=[ButtercupLLM.CLAUDE_4_5_SONNET, ButtercupLLM.GEMINI_PRO],
|
||||
model_name=ButtercupLLM.OPENAI_GPT_5_5.value,
|
||||
fallback_models=[ButtercupLLM.CLAUDE_4_6_SONNET, ButtercupLLM.GEMINI_PRO],
|
||||
)
|
||||
| StrOutputParser()
|
||||
)
|
||||
|
||||
@@ -587,8 +587,8 @@ Remember to call the `test_instructions` tool to log and validate any test comma
|
||||
def _are_test_instructions_valid(instructions: str, output: bytes, error: bytes) -> bool:
|
||||
"""Validate a set of test instructions by executing them inside the project environment."""
|
||||
llm = create_default_llm(
|
||||
model_name=ButtercupLLM.OPENAI_GPT_4_1.value,
|
||||
fallback_models=[ButtercupLLM.CLAUDE_4_5_SONNET, ButtercupLLM.GEMINI_PRO],
|
||||
model_name=ButtercupLLM.OPENAI_GPT_5_5.value,
|
||||
fallback_models=[ButtercupLLM.CLAUDE_4_6_SONNET, ButtercupLLM.GEMINI_PRO],
|
||||
)
|
||||
chain = ARE_VALID_TEST_INSTRUCTIONS_PROMPT | llm | StrOutputParser()
|
||||
res = chain.invoke(
|
||||
@@ -717,10 +717,10 @@ class ContextRetrieverAgent(PatcherAgentBase):
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
"""Initialize a few fields"""
|
||||
self.llm = create_default_llm(model_name=ButtercupLLM.OPENAI_GPT_4_1.value)
|
||||
self.cheap_llm = create_default_llm(model_name=ButtercupLLM.OPENAI_GPT_4_1_MINI.value)
|
||||
self.llm = create_default_llm(model_name=ButtercupLLM.OPENAI_GPT_5_5.value)
|
||||
self.cheap_llm = create_default_llm(model_name=ButtercupLLM.OPENAI_GPT_5_4_MINI.value)
|
||||
self.cheap_fallback_llms = [
|
||||
create_default_llm(model_name=ButtercupLLM.CLAUDE_4_5_SONNET.value),
|
||||
create_default_llm(model_name=ButtercupLLM.CLAUDE_4_6_SONNET.value),
|
||||
create_default_llm(model_name=ButtercupLLM.GEMINI_PRO.value),
|
||||
]
|
||||
|
||||
|
||||
@@ -405,9 +405,9 @@ class ReflectionAgent(PatcherAgentBase):
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
"""Initialize a few fields"""
|
||||
default_llm = create_default_llm(model_name=ButtercupLLM.OPENAI_GPT_4_1.value)
|
||||
default_llm = create_default_llm(model_name=ButtercupLLM.OPENAI_GPT_5_5.value)
|
||||
fallback_llms: list[Runnable] = []
|
||||
for fb_model in [ButtercupLLM.CLAUDE_4_5_SONNET, ButtercupLLM.GEMINI_PRO]:
|
||||
for fb_model in [ButtercupLLM.CLAUDE_4_6_SONNET, ButtercupLLM.GEMINI_PRO]:
|
||||
fallback_llms.append(create_default_llm(model_name=fb_model.value))
|
||||
|
||||
self.llm = default_llm.with_fallbacks(fallback_llms)
|
||||
|
||||
@@ -130,7 +130,7 @@ class RootCauseAgent(PatcherAgentBase):
|
||||
"max_tokens": 20000,
|
||||
}
|
||||
default_llm = create_default_llm_with_temperature(
|
||||
model_name=ButtercupLLM.OPENAI_GPT_4_1.value,
|
||||
model_name=ButtercupLLM.OPENAI_GPT_5_5.value,
|
||||
**kwargs,
|
||||
)
|
||||
fallback_llms = [
|
||||
@@ -138,7 +138,7 @@ class RootCauseAgent(PatcherAgentBase):
|
||||
model_name=m.value,
|
||||
**kwargs,
|
||||
)
|
||||
for m in [ButtercupLLM.CLAUDE_4_5_SONNET, ButtercupLLM.GEMINI_PRO]
|
||||
for m in [ButtercupLLM.CLAUDE_4_6_SONNET, ButtercupLLM.GEMINI_PRO]
|
||||
]
|
||||
self.llm = default_llm.with_fallbacks(fallback_llms)
|
||||
|
||||
|
||||
@@ -347,12 +347,12 @@ class SWEAgent(PatcherAgentBase):
|
||||
"max_tokens": 20000,
|
||||
}
|
||||
self.default_llm = create_default_llm_with_temperature(
|
||||
model_name=ButtercupLLM.OPENAI_GPT_4_1.value,
|
||||
model_name=ButtercupLLM.OPENAI_GPT_5_5.value,
|
||||
**kwargs,
|
||||
)
|
||||
fallback_llms: list[Runnable] = []
|
||||
for fb_model in [
|
||||
ButtercupLLM.CLAUDE_4_5_SONNET,
|
||||
ButtercupLLM.CLAUDE_4_6_SONNET,
|
||||
ButtercupLLM.GEMINI_PRO,
|
||||
]:
|
||||
fallback_llms.append(create_default_llm_with_temperature(model_name=fb_model.value, **kwargs))
|
||||
|
||||
@@ -94,11 +94,10 @@ class Task:
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
fallbacks = [
|
||||
ButtercupLLM.CLAUDE_4_SONNET,
|
||||
ButtercupLLM.OPENAI_GPT_4_1,
|
||||
ButtercupLLM.OPENAI_GPT_5_5,
|
||||
ButtercupLLM.GEMINI_PRO,
|
||||
]
|
||||
self.llm = Task.get_llm(ButtercupLLM.CLAUDE_4_5_SONNET, fallbacks)
|
||||
self.llm = Task.get_llm(ButtercupLLM.CLAUDE_4_6_SONNET, fallbacks)
|
||||
self.tools = [
|
||||
get_function_definition,
|
||||
get_type_definition,
|
||||
|
||||
Reference in New Issue
Block a user