44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
from python_a2a import A2AServer, skill, agent, run_server, TaskStatus, TaskState
|
|
import math
|
|
import re
|
|
|
|
@agent(
|
|
name="Tangent Agent",
|
|
description="Provides the tangent of a number",
|
|
version="1.0.0"
|
|
)
|
|
class TangentAgent(A2AServer):
|
|
|
|
@skill(
|
|
name="Get Tangent",
|
|
description="Get the tangent of a number",
|
|
tags=["tangent", "tan"]
|
|
)
|
|
def get_tangent(self, number):
|
|
"""Get the tangent of a number."""
|
|
# Mock implementation
|
|
return f"The tangent of {number} is {math.tan(number)}"
|
|
|
|
def handle_task(self, task):
|
|
# Extract location from message
|
|
|
|
input_message = task.message["content"]["text"]
|
|
|
|
# regex to extract the number from the text
|
|
match = re.search(r"([-+]?[0-9]*\.?[0-9]+)", input_message)
|
|
|
|
number = float(match.group(1))
|
|
print("number", number)
|
|
# Get weather and create response
|
|
tangent_output = self.get_tangent(number)
|
|
task.artifacts = [{
|
|
"parts": [{"type": "text", "text": tangent_output}]
|
|
}]
|
|
task.status = TaskStatus(state=TaskState.COMPLETED)
|
|
|
|
return task
|
|
|
|
# Run the server
|
|
if __name__ == "__main__":
|
|
agent = TangentAgent()
|
|
run_server(agent, port=4739) |