chore: update typing in types module to Python 3.10+ syntax (#3482)
Some checks failed
Notify Downstream / notify-downstream (push) Has been cancelled

Co-authored-by: Lucas Gomide <lucaslg200@gmail.com>
This commit is contained in:
Greyson LaLonde
2025-09-10 09:07:36 -04:00
committed by GitHub
parent 83682d511f
commit 079cb72f6e
3 changed files with 59 additions and 27 deletions

View File

@@ -1,16 +1,22 @@
from typing import List
"""Crew chat input models.
This module provides models for defining chat inputs and fields
for crew interactions.
"""
from pydantic import BaseModel, Field
class ChatInputField(BaseModel):
"""
Represents a single required input for the crew, with a name and short description.
"""Represents a single required input for the crew.
Example:
{
"name": "topic",
"description": "The topic to focus on for the conversation"
}
```python
field = ChatInputField(
name="topic",
description="The topic to focus on for the conversation"
)
```
"""
name: str = Field(..., description="The name of the input field")
@@ -18,23 +24,25 @@ class ChatInputField(BaseModel):
class ChatInputs(BaseModel):
"""
Holds a high-level crew_description plus a list of ChatInputFields.
"""Holds crew metadata and input field definitions.
Example:
{
"crew_name": "topic-based-qa",
"crew_description": "Use this crew for topic-based Q&A",
"inputs": [
{"name": "topic", "description": "The topic to focus on"},
{"name": "username", "description": "Name of the user"},
```python
inputs = ChatInputs(
crew_name="topic-based-qa",
crew_description="Use this crew for topic-based Q&A",
inputs=[
ChatInputField(name="topic", description="The topic to focus on"),
ChatInputField(name="username", description="Name of the user"),
]
}
)
```
"""
crew_name: str = Field(..., description="The name of the crew")
crew_description: str = Field(
..., description="A description of the crew's purpose"
)
inputs: List[ChatInputField] = Field(
inputs: list[ChatInputField] = Field(
default_factory=list, description="A list of input fields for the crew"
)

View File

@@ -1,18 +1,37 @@
from typing import List, Dict, TypedDict
"""Human-in-the-loop (HITL) type definitions.
This module provides type definitions for human-in-the-loop interactions
in crew executions.
"""
from typing import TypedDict
class HITLResumeInfo(TypedDict, total=False):
"""HITL resume information passed from flow to crew."""
"""HITL resume information passed from flow to crew.
Attributes:
task_id: Unique identifier for the task.
crew_execution_id: Unique identifier for the crew execution.
task_key: Key identifying the specific task.
task_output: Output from the task before human intervention.
human_feedback: Feedback provided by the human.
previous_messages: History of messages in the conversation.
"""
task_id: str
crew_execution_id: str
task_key: str
task_output: str
human_feedback: str
previous_messages: List[Dict[str, str]]
previous_messages: list[dict[str, str]]
class CrewInputsWithHITL(TypedDict, total=False):
"""Crew inputs that may contain HITL resume information."""
"""Crew inputs that may contain HITL resume information.
Attributes:
_hitl_resume: Optional HITL resume information for continuing execution.
"""
_hitl_resume: HITLResumeInfo

View File

@@ -1,9 +1,15 @@
"""Usage metrics tracking for CrewAI execution.
This module provides models for tracking token usage and request metrics
during crew and agent execution.
"""
from pydantic import BaseModel, Field
from typing_extensions import Self
class UsageMetrics(BaseModel):
"""
Model to track usage metrics for the crew's execution.
"""Track usage metrics for crew execution.
Attributes:
total_tokens: Total number of tokens used.
@@ -27,12 +33,11 @@ class UsageMetrics(BaseModel):
default=0, description="Number of successful requests made."
)
def add_usage_metrics(self, usage_metrics: "UsageMetrics"):
"""
Add the usage metrics from another UsageMetrics object.
def add_usage_metrics(self, usage_metrics: Self) -> None:
"""Add usage metrics from another UsageMetrics object.
Args:
usage_metrics (UsageMetrics): The usage metrics to add.
usage_metrics: The usage metrics to add.
"""
self.total_tokens += usage_metrics.total_tokens
self.prompt_tokens += usage_metrics.prompt_tokens