Skip to content

Commit 2d207d4

Browse files
committed
feat: add LLM model dropdown for trae-cli (no rebuild needed)
1 parent e7aa995 commit 2d207d4

4 files changed

Lines changed: 32 additions & 1 deletion

File tree

.github/workflows/test-e2e-advanced.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,27 @@ on:
3636
Maximum wait time in seconds for the agent to respond.
3737
required: false
3838
default: 120
39+
model:
40+
description: |
41+
LLM model to use (only for trae-cli). Select "default" to use image config.
42+
required: false
43+
type: choice
44+
default: default
45+
options:
46+
- default
47+
- deepseek/deepseek-v4-flash
48+
- deepseek/deepseek-v4-pro
49+
- deepseek/deepseek-chat
50+
- deepseek/deepseek-r1
51+
- openai/gpt-4o-mini
52+
- openai/gpt-4o
53+
- openai/o3-mini
54+
- google/gemini-2.0-flash-exp
55+
- google/gemini-2.5-flash
56+
- google/gemini-2.5-pro
57+
- anthropic/claude-3.5-sonnet
58+
- anthropic/claude-opus-4
59+
- meta-llama/llama-3.3-70b-instruct
3960
opencode_api_key:
4061
description: |
4162
OPENCODE_API_KEY (for opencode agent)
@@ -109,4 +130,5 @@ jobs:
109130
--agent ${{ inputs.agent }} \
110131
--prompt "${{ inputs.prompt }}" \
111132
--timeout ${{ inputs.timeout }} \
133+
--model ${{ inputs.model }} \
112134
-v --tb=short -s

tests/e2e/agents/py-devkit-image-base.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ agents:
2323

2424
- name: trae-cli
2525
binary: trae-cli
26+
supports_model: true
2627
env_vars: [OPENAI_API_KEY, ANTHROPIC_API_KEY, OPENROUTER_API_KEY, DOUBAO_API_KEY]
2728
run_cmd: 'trae-cli run {prompt}'

tests/e2e/conftest.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ def pytest_addoption(parser):
1212
parser.addoption("--agent", action="store", default=None)
1313
parser.addoption("--prompt", action="store", default=None)
1414
parser.addoption("--timeout", action="store", type=int, default=120)
15+
parser.addoption("--model", action="store", default="default")
1516

1617

1718
def load_agent_config(image_name):
@@ -69,6 +70,11 @@ def cmd_timeout(request):
6970
return request.config.getoption("--timeout")
7071

7172

73+
@pytest.fixture(scope="module")
74+
def llm_model(request):
75+
return request.config.getoption("--model")
76+
77+
7278
@pytest.fixture(scope="module")
7379
def check_env_vars(selected_agent):
7480
missing = [v for v in selected_agent.get("env_vars", []) if v not in os.environ]

tests/e2e/test_advanced.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44
import pytest
55

66

7-
def test_agent_prompt_response(container_id, selected_agent, custom_prompt, cmd_timeout):
7+
def test_agent_prompt_response(container_id, selected_agent, custom_prompt, cmd_timeout, llm_model):
88
run_template = selected_agent.get("run_cmd")
99
if not run_template:
1010
pytest.skip(f"No run_cmd defined for {selected_agent['name']}")
1111

1212
cmd = run_template.replace("{prompt}", shlex.quote(custom_prompt))
13+
if selected_agent.get("supports_model") and llm_model and llm_model != "default":
14+
cmd += f" --model {shlex.quote(llm_model)}"
1315

1416
proc = subprocess.Popen(
1517
["docker", "exec", "-i", container_id, "bash", "-c", cmd],

0 commit comments

Comments
 (0)