diff --git a/agent_reviewer/builder.py b/agent_reviewer/builder.py index 7a0b070..110c3b4 100644 --- a/agent_reviewer/builder.py +++ b/agent_reviewer/builder.py @@ -7,11 +7,11 @@ typed :class:`ReviewReport` through the ``submit_review_report`` tool. from __future__ import annotations from dataclasses import dataclass +from types import SimpleNamespace from typing import Any from a2a_pack import GiteaBackend -from deepagents import create_deep_agent -from langchain_openai import ChatOpenAI +from a2a_pack.deepagents import create_a2a_deep_agent from .config import Settings, load_settings from .tools import ReviewReport, ToolContext, build_tools @@ -132,22 +132,19 @@ def build_reviewer_graph( + ", ".join(missing_llm_fields) ) - model_kwargs: dict[str, Any] = { - "model": ctx.llm_model, - "base_url": ctx.llm_base_url, - "api_key": ctx.llm_api_key, - "stream_usage": True, - } - if ctx.llm_temperature_mode != "omit": - model_kwargs["temperature"] = ( - ctx.llm_temperature if ctx.llm_temperature is not None else 0.0 - ) - if ctx.llm_extra_body: - model_kwargs["extra_body"] = dict(ctx.llm_extra_body) - model = ChatOpenAI(**model_kwargs) + llm_creds = SimpleNamespace( + model=ctx.llm_model, + base_url=ctx.llm_base_url, + api_key=ctx.llm_api_key, + temperature_mode=ctx.llm_temperature_mode or "default", + temperature=ctx.llm_temperature, + extra_body=dict(ctx.llm_extra_body or {}), + ) - return create_deep_agent( - model=model, + return create_a2a_deep_agent( + ctx, + creds=llm_creds, + default_temperature=0.0, tools=tools, system_prompt=SYSTEM_PROMPT, backend=backend, diff --git a/tests/test_agent.py b/tests/test_agent.py index 04f4e05..7ad9c84 100644 --- a/tests/test_agent.py +++ b/tests/test_agent.py @@ -84,16 +84,13 @@ def test_reviewer_graph_uses_forwarded_llm_credentials( ) -> None: captured: dict = {} - class FakeChatOpenAI: - def __init__(self, **kwargs: object) -> None: - captured["model_kwargs"] = kwargs - - def fake_create_deep_agent(**kwargs: object) -> dict[str, object]: + def fake_create_a2a_deep_agent(ctx, *, creds, default_temperature=None, **kwargs) -> dict[str, object]: + captured["creds"] = creds + captured["default_temperature"] = default_temperature captured["graph_kwargs"] = kwargs return kwargs - monkeypatch.setattr(reviewer_builder, "ChatOpenAI", FakeChatOpenAI) - monkeypatch.setattr(reviewer_builder, "create_deep_agent", fake_create_deep_agent) + monkeypatch.setattr(reviewer_builder, "create_a2a_deep_agent", fake_create_a2a_deep_agent) graph = build_reviewer_graph( ReviewerContext( @@ -111,13 +108,13 @@ def test_reviewer_graph_uses_forwarded_llm_credentials( ) assert graph is captured["graph_kwargs"] - assert captured["model_kwargs"] == { - "model": "platform-model", - "base_url": "http://litellm.test/v1", - "api_key": "scoped-grant-token", - "stream_usage": True, - "extra_body": {"extra_body": {"thinking": {"type": "disabled"}}}, - } + creds = captured["creds"] + assert getattr(creds, "model") == "platform-model" + assert getattr(creds, "base_url") == "http://litellm.test/v1" + assert getattr(creds, "api_key") == "scoped-grant-token" + assert getattr(creds, "temperature_mode") == "omit" + assert getattr(creds, "extra_body") == {"extra_body": {"thinking": {"type": "disabled"}}} + assert captured["default_temperature"] == 0.0 def test_reviewer_graph_rejects_missing_forwarded_llm_credentials(