Skip to content
This repository was archived by the owner on Nov 10, 2025. It is now read-only.

Commit 39a5b4a

Browse files
devin-ai-integration[bot]João
andcommitted
fix: correct CodeInterpreterSchema libraries_used field example
- Fix misleading Field description example that showed comma-separated string - Change example from 'numpy,pandas,beautifulsoup4' to ['numpy', 'pandas', 'beautifulsoup4'] - Add comprehensive schema validation tests to prevent regression - Resolves issue #3512 where LLM agents generated invalid input format The libraries_used field expects List[str] but the example in the Field description was showing a comma-separated string format, causing LLM agents to generate input that failed Pydantic validation with 'Field required' errors. Tests added: - test_code_interpreter_schema_validation_valid_list: Verifies List[str] works - test_code_interpreter_schema_validation_invalid_string: Verifies strings are rejected - test_code_interpreter_schema_validation_empty_list: Verifies empty list works - test_code_interpreter_schema_field_description: Verifies example format is correct Co-Authored-By: João <joao@crewai.com>
1 parent 78317b9 commit 39a5b4a

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

crewai_tools/tools/code_interpreter_tool/code_interpreter_tool.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class CodeInterpreterSchema(BaseModel):
3434

3535
libraries_used: List[str] = Field(
3636
...,
37-
description="List of libraries used in the code with proper installing names separated by commas. Example: numpy,pandas,beautifulsoup4",
37+
description="List of libraries used in the code with proper installing names. Example: ['numpy', 'pandas', 'beautifulsoup4']",
3838
)
3939

4040

tests/tools/test_code_interpreter_tool.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,3 +173,51 @@ def test_unsafe_mode_running_unsafe_code(printer_mock, docker_unavailable_mock):
173173
"WARNING: Running code in unsafe mode", color="bold_magenta"
174174
)
175175
assert 5.0 == result
176+
177+
178+
def test_code_interpreter_schema_validation_valid_list():
179+
"""Test that CodeInterpreterSchema accepts valid List[str] for libraries_used."""
180+
from crewai_tools.tools.code_interpreter_tool.code_interpreter_tool import CodeInterpreterSchema
181+
182+
valid_input = CodeInterpreterSchema(
183+
code="print('Hello, World!')",
184+
libraries_used=["numpy", "pandas", "beautifulsoup4"]
185+
)
186+
assert valid_input.code == "print('Hello, World!')"
187+
assert valid_input.libraries_used == ["numpy", "pandas", "beautifulsoup4"]
188+
189+
190+
def test_code_interpreter_schema_validation_invalid_string():
191+
"""Test that CodeInterpreterSchema rejects comma-separated string for libraries_used."""
192+
from crewai_tools.tools.code_interpreter_tool.code_interpreter_tool import CodeInterpreterSchema
193+
from pydantic import ValidationError
194+
195+
with pytest.raises(ValidationError) as exc_info:
196+
CodeInterpreterSchema(
197+
code="print('Hello, World!')",
198+
libraries_used="numpy,pandas,beautifulsoup4"
199+
)
200+
201+
assert "libraries_used" in str(exc_info.value)
202+
203+
204+
def test_code_interpreter_schema_validation_empty_list():
205+
"""Test that CodeInterpreterSchema accepts empty list for libraries_used."""
206+
from crewai_tools.tools.code_interpreter_tool.code_interpreter_tool import CodeInterpreterSchema
207+
208+
valid_input = CodeInterpreterSchema(
209+
code="print('Hello, World!')",
210+
libraries_used=[]
211+
)
212+
assert valid_input.libraries_used == []
213+
214+
215+
def test_code_interpreter_schema_field_description():
216+
"""Test that the Field description example shows proper List[str] format."""
217+
from crewai_tools.tools.code_interpreter_tool.code_interpreter_tool import CodeInterpreterSchema
218+
219+
schema_dict = CodeInterpreterSchema.model_json_schema()
220+
libraries_used_description = schema_dict["properties"]["libraries_used"]["description"]
221+
222+
assert "['numpy', 'pandas', 'beautifulsoup4']" in libraries_used_description
223+
assert "numpy,pandas,beautifulsoup4" not in libraries_used_description

0 commit comments

Comments
 (0)