Skip to content

Commit daa5d7b

Browse files
jsonbaileyclaude
andcommitted
fix(openai): remove _to_openai_name and pass configured model to Agent
_to_openai_name converted hyphens to underscores based on an assumed restriction that doesn't exist — the OpenAI API allows hyphens in tool and function names (^[a-zA-Z0-9_-]{1,64}$). Removing it simplifies the tool name lookup and agent naming. Also adds model=model.name to the Agent constructor so each node runs with its configured model rather than the SDK default. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 96847b9 commit daa5d7b

1 file changed

Lines changed: 5 additions & 12 deletions

File tree

packages/ai-providers/server-ai-openai/src/ldai_openai/openai_agent_graph_runner.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,6 @@
1010
from ldai.tracker import TokenUsage
1111

1212

13-
def _to_openai_name(name: str) -> str:
14-
"""Convert a hyphenated tool/node name to an underscore-separated OpenAI function name."""
15-
return name.replace('-', '_')
16-
17-
1813
def _build_native_tool_map() -> dict:
1914
try:
2015
from agents import (
@@ -281,21 +276,19 @@ def build_node(node: AgentGraphNode, ctx: dict) -> Any:
281276
# --- tools ---
282277
agent_tools: List[Tool] = []
283278
for tool_def in tool_defs:
284-
tool_name_raw = tool_def.get('name', '')
285-
tool_name = _to_openai_name(tool_name_raw)
279+
tool_name = tool_def.get('name', '')
286280

287281
# Check native OpenAI tools first, then fall back to ToolRegistry
288282
if tool_name in _NATIVE_OPENAI_TOOLS:
289283
agent_tools.append(_NATIVE_OPENAI_TOOLS[tool_name](tool_def))
290284
continue
291285

292-
tool_fn = self._tools.get(tool_name) or self._tools.get(tool_name_raw)
286+
tool_fn = self._tools.get(tool_name)
293287
if not tool_fn:
294288
continue
295289

296290
def _make_tool(
297291
name: str,
298-
raw_name: str,
299292
fn: Any,
300293
description: str,
301294
params_schema: dict,
@@ -306,7 +299,7 @@ def wrapped(tool_ctx: ToolContext, tool_args: str) -> Any:
306299
args = json.loads(tool_args)
307300
except Exception:
308301
args = {}
309-
path.append(raw_name)
302+
path.append(name)
310303
if config_tracker is not None:
311304
config_tracker.track_tool_call(
312305
name,
@@ -324,15 +317,15 @@ def wrapped(tool_ctx: ToolContext, tool_args: str) -> Any:
324317
agent_tools.append(
325318
_make_tool(
326319
tool_name,
327-
tool_name_raw,
328320
tool_fn,
329321
tool_def.get('description', ''),
330322
tool_def.get('parameters', {}),
331323
)
332324
)
333325

334326
return Agent(
335-
name=_to_openai_name(node_config.key),
327+
name=node_config.key,
328+
model=model.name,
336329
instructions=f'{RECOMMENDED_PROMPT_PREFIX} {node_config.instructions or ""}',
337330
handoffs=list(agent_handoffs),
338331
tools=list(agent_tools),

0 commit comments

Comments
 (0)