test_agent_response_streaming.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import pytest
  2. from agency_swarm import Agency, Agent
  3. @pytest.mark.asyncio
  4. async def test_agency_get_response_persists_messages(tmp_path, monkeypatch) -> None:
  5. """Real LLM integration: ensure non-streaming responses persist messages."""
  6. monkeypatch.setenv("AGENCY_SWARM_CHATS_DIR", str(tmp_path))
  7. agent = Agent(
  8. name="ResponseAgent",
  9. instructions="Reply with a short greeting.",
  10. model="gpt-5.4-mini",
  11. )
  12. agency = Agency(agent)
  13. result = await agency.get_response("Say hello in one word.")
  14. assert isinstance(result.final_output, str)
  15. assert result.final_output.strip()
  16. messages = agency.thread_manager.get_all_messages()
  17. assert len(messages) >= 2
  18. assert any(isinstance(item, dict) and item.get("agent") == agent.name for item in messages)
  19. @pytest.mark.asyncio
  20. async def test_agency_get_response_stream_persists_messages(tmp_path, monkeypatch) -> None:
  21. """Real LLM integration: ensure streaming responses persist messages."""
  22. monkeypatch.setenv("AGENCY_SWARM_CHATS_DIR", str(tmp_path))
  23. agent = Agent(
  24. name="StreamAgent",
  25. instructions="Reply with a short greeting.",
  26. model="gpt-5.4-mini",
  27. )
  28. agency = Agency(agent)
  29. stream = agency.get_response_stream("Say hello in one word.")
  30. async for _event in stream:
  31. pass
  32. final_result = stream.final_result
  33. assert final_result is not None
  34. assert isinstance(final_result.final_output, str)
  35. assert final_result.final_output.strip()
  36. messages = agency.thread_manager.get_all_messages()
  37. assert len(messages) >= 2
  38. assert any(isinstance(item, dict) and item.get("agent") == agent.name for item in messages)