Python: [BREAKING] added SerializationMixin and applied to contents, agents, chat client… (#1012)

* added SerializationMixin and applied to contents, agents, chat clients, removed AFBaseModel

* fix annotations type

* mypy fixes

* fix tests

* fix serializable subvalues and added large docstring

* updated indents in code block

* fixed exported urls
This commit is contained in:
Eduard van Valkenburg
2025-09-30 19:53:46 +00:00
committed by GitHub
parent 3eb26632ce
commit 54ad135914
84 changed files with 2302 additions and 1957 deletions
+1 -1
View File
@@ -51,7 +51,7 @@ async def math_agent(task: TaskType, llm: LLM) -> float:
MCPStdioTool(name="calculator", command="uvx", args=["mcp-server-calculator"]) as mcp_server,
ChatAgent(
chat_client=OpenAIChatClient(
ai_model_id=llm.model,
model_id=llm.model,
api_key="your-api-key",
base_url=llm.endpoint,
),
@@ -168,7 +168,7 @@ async def math_agent(task: MathProblem, llm: LLM) -> float:
MCPStdioTool(name="calculator", command="uvx", args=["mcp-server-calculator"]) as mcp_server,
ChatAgent(
chat_client=OpenAIChatClient(
ai_model_id=llm.model, # This is the model being trained
model_id=llm.model, # This is the model being trained
api_key=os.getenv("OPENAI_API_KEY") or "dummy", # Can be dummy when connecting to training LLM
base_url=llm.endpoint, # vLLM server endpoint provided by agent-lightning
),
@@ -103,14 +103,14 @@ class Tau2Agent(LitAgent):
assistant_chat_client = OpenAIChatClient(
base_url=llm.endpoint, # vLLM endpoint for the model being trained
api_key=openai_api_key,
ai_model_id=llm.model, # Model ID being trained
model_id=llm.model, # Model ID being trained
)
# User simulator: uses a fixed, capable model for consistent simulation
user_simulator_chat_client = OpenAIChatClient(
base_url=openai_base_url, # External API endpoint
api_key=openai_api_key,
ai_model_id="gpt-4.1", # Fixed model for user simulator
model_id="gpt-4.1", # Fixed model for user simulator
)
try:
@@ -18,10 +18,6 @@ from openai.types.chat import ChatCompletion, ChatCompletionMessage
from openai.types.chat.chat_completion import Choice
def test_import():
"""Test that the module can be imported."""
@pytest.fixture
def workflow_two_agents():
"""Test a workflow with two OpenAI chat agents where first agent's result passes to second agent."""
@@ -111,14 +107,12 @@ def workflow_two_agents():
yield workflow
@pytest.mark.asyncio
async def test_openai_workflow_two_agents(workflow_two_agents):
events = await workflow_two_agents.run("Please analyze the quarterly sales data")
assert "Based on the analysis 'Analyzed data shows trend upward', I recommend investing" in events.get_outputs()
@pytest.mark.asyncio
async def test_observability(workflow_two_agents):
r"""Expected trace tree: