fix(langchain): activate test_return_direct_spec tests, fix types (#34565)

Co-authored-by: Mason Daugherty <mason@langchain.dev>
Co-authored-by: Mason Daugherty <github@mdrxy.com>
This commit is contained in:
Christophe Bornet
2026-01-10 04:52:12 +01:00
committed by GitHub
parent 5fbf270c9d
commit a7b943bbe3
2 changed files with 21 additions and 10 deletions

View File

@@ -141,8 +141,8 @@ ignore-var-parameters = true # ignore missing documentation for *args and **kwa
"ANN", # Annotations, needs to fix "ANN", # Annotations, needs to fix
"ARG", # Arguments, needs to fix "ARG", # Arguments, needs to fix
] ]
"tests/unit_tests/agents/test_return_direct_spec.py" = ["F821"]
"tests/unit_tests/agents/test_responses_spec.py" = ["F821"] "tests/unit_tests/agents/test_responses_spec.py" = ["F821"]
"tests/unit_tests/agents/test_return_direct_spec.py" = ["F821"]
"tests/unit_tests/agents/test_react_agent.py" = ["ALL"] "tests/unit_tests/agents/test_react_agent.py" = ["ALL"]
"tests/*" = [ "tests/*" = [

View File

@@ -1,16 +1,27 @@
from __future__ import annotations from __future__ import annotations
import pytest import os
from typing import (
Any,
)
from unittest.mock import MagicMock
# Skip this test since langgraph.prebuilt.responses is not available import pytest
pytest.skip("langgraph.prebuilt.responses not available", allow_module_level=True) from langchain_core.messages import HumanMessage
from langchain_core.tools import tool
from langchain.agents import create_agent
from langchain.agents.structured_output import (
ToolStrategy,
)
from tests.unit_tests.agents.utils import BaseSchema, load_spec
try: try:
from langchain_openai import ChatOpenAI from langchain_openai import ChatOpenAI
except ImportError: except ImportError:
skip_openai_integration_tests = True skip_openai_integration_tests = True
else: else:
skip_openai_integration_tests = False skip_openai_integration_tests = "OPENAI_API_KEY" not in os.environ
AGENT_PROMPT = """ AGENT_PROMPT = """
You are a strict polling bot. You are a strict polling bot.
@@ -33,10 +44,10 @@ class TestCase(BaseSchema):
TEST_CASES = load_spec("return_direct", as_model=TestCase) TEST_CASES = load_spec("return_direct", as_model=TestCase)
def _make_tool(*, return_direct: bool): def _make_tool(*, return_direct: bool) -> dict[str, Any]:
attempts = 0 attempts = 0
def _side_effect(): def _side_effect() -> dict[str, Any]:
nonlocal attempts nonlocal attempts
attempts += 1 attempts += 1
return { return {
@@ -54,7 +65,7 @@ def _make_tool(*, return_direct: bool):
), ),
return_direct=return_direct, return_direct=return_direct,
) )
def _wrapped(): def _wrapped() -> Any:
return mock() return mock()
return {"tool": _wrapped, "mock": mock} return {"tool": _wrapped, "mock": mock}
@@ -74,14 +85,14 @@ def test_return_direct_integration_matrix(case: TestCase) -> None:
agent = create_agent( agent = create_agent(
model, model,
tools=[poll_tool["tool"]], tools=[poll_tool["tool"]],
prompt=AGENT_PROMPT, system_prompt=AGENT_PROMPT,
response_format=ToolStrategy(case.response_format), response_format=ToolStrategy(case.response_format),
) )
else: else:
agent = create_agent( agent = create_agent(
model, model,
tools=[poll_tool["tool"]], tools=[poll_tool["tool"]],
prompt=AGENT_PROMPT, system_prompt=AGENT_PROMPT,
) )
result = agent.invoke( result = agent.invoke(