mirror of
https://github.com/temporal-community/temporal-ai-agent.git
synced 2026-03-15 14:08:08 +01:00
renaming workflows and activities
This commit is contained in:
@@ -25,7 +25,7 @@ if os.environ.get("LLM_PROVIDER") == "ollama":
|
||||
|
||||
class ToolActivities:
|
||||
@activity.defn
|
||||
async def validate_llm_prompt(
|
||||
async def agent_validatePrompt(
|
||||
self, validation_input: ValidationInput
|
||||
) -> ValidationResult:
|
||||
"""
|
||||
@@ -78,7 +78,7 @@ class ToolActivities:
|
||||
prompt=validation_prompt, context_instructions=context_instructions
|
||||
)
|
||||
|
||||
result = self.prompt_llm(prompt_input)
|
||||
result = self.agent_toolPlanner(prompt_input)
|
||||
|
||||
return ValidationResult(
|
||||
validationResult=result.get("validationResult", False),
|
||||
@@ -86,7 +86,7 @@ class ToolActivities:
|
||||
)
|
||||
|
||||
@activity.defn
|
||||
def prompt_llm(self, input: ToolPromptInput) -> dict:
|
||||
def agent_toolPlanner(self, input: ToolPromptInput) -> dict:
|
||||
llm_provider = os.environ.get("LLM_PROVIDER", "openai").lower()
|
||||
|
||||
print(f"LLM provider: {llm_provider}")
|
||||
|
||||
12
api/main.py
12
api/main.py
@@ -4,8 +4,8 @@ from temporalio.client import Client
|
||||
from temporalio.exceptions import TemporalError
|
||||
from temporalio.api.enums.v1 import WorkflowExecutionStatus
|
||||
|
||||
from workflows.tool_workflow import ToolWorkflow
|
||||
from models.data_types import CombinedInput, ToolWorkflowParams
|
||||
from workflows.agent_goal_workflow import AgentGoalWorkflow
|
||||
from models.data_types import CombinedInput, AgentGoalWorkflowParams
|
||||
from tools.goal_registry import goal_match_train_invoice
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from shared.config import get_temporal_client, TEMPORAL_TASK_QUEUE
|
||||
@@ -94,7 +94,7 @@ async def get_conversation_history():
|
||||
async def send_prompt(prompt: str):
|
||||
# Create combined input
|
||||
combined_input = CombinedInput(
|
||||
tool_params=ToolWorkflowParams(None, None),
|
||||
tool_params=AgentGoalWorkflowParams(None, None),
|
||||
agent_goal=goal_match_train_invoice,
|
||||
)
|
||||
|
||||
@@ -102,7 +102,7 @@ async def send_prompt(prompt: str):
|
||||
|
||||
# Start (or signal) the workflow
|
||||
await temporal_client.start_workflow(
|
||||
ToolWorkflow.run,
|
||||
AgentGoalWorkflow.run,
|
||||
combined_input,
|
||||
id=workflow_id,
|
||||
task_queue=TEMPORAL_TASK_QUEUE,
|
||||
@@ -141,7 +141,7 @@ async def end_chat():
|
||||
async def start_workflow():
|
||||
# Create combined input
|
||||
combined_input = CombinedInput(
|
||||
tool_params=ToolWorkflowParams(None, None),
|
||||
tool_params=AgentGoalWorkflowParams(None, None),
|
||||
agent_goal=goal_match_train_invoice,
|
||||
)
|
||||
|
||||
@@ -149,7 +149,7 @@ async def start_workflow():
|
||||
|
||||
# Start the workflow with the starter prompt from the goal
|
||||
await temporal_client.start_workflow(
|
||||
ToolWorkflow.run,
|
||||
AgentGoalWorkflow.run,
|
||||
combined_input,
|
||||
id=workflow_id,
|
||||
task_queue=TEMPORAL_TASK_QUEUE,
|
||||
|
||||
50
backup_sessions.json
Normal file
50
backup_sessions.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"$schema": "https://cdn.statically.io/gh/nguyenngoclongdev/cdn/main/schema/v10/terminal-keeper.json",
|
||||
"theme": "tribe",
|
||||
"active": "default",
|
||||
"activateOnStartup": false,
|
||||
"keepExistingTerminals": false,
|
||||
"sessions": {
|
||||
"default": [
|
||||
[
|
||||
{
|
||||
"name": "frontend",
|
||||
"autoExecuteCommands": true,
|
||||
"commands": [
|
||||
"cd frontend && npx vite"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "uvicorn",
|
||||
"autoExecuteCommands": true,
|
||||
"commands": [
|
||||
"poetry run uvicorn api.main:app --reload"
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"name": "agent worker",
|
||||
"autoExecuteCommands": true,
|
||||
"commands": [
|
||||
"poetry run python scripts/run_worker.py"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "trains worker",
|
||||
"autoExecuteCommands": true,
|
||||
"commands": [
|
||||
"poetry run python scripts/run_legacy_worker.py"
|
||||
]
|
||||
}
|
||||
],
|
||||
{
|
||||
"name": "trains_api",
|
||||
"autoExecuteCommands": true,
|
||||
"commands": [
|
||||
"poetry run python thirdparty/train_api.py"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -4,14 +4,14 @@ from models.tool_definitions import AgentGoal
|
||||
|
||||
|
||||
@dataclass
|
||||
class ToolWorkflowParams:
|
||||
class AgentGoalWorkflowParams:
|
||||
conversation_summary: Optional[str] = None
|
||||
prompt_queue: Optional[Deque[str]] = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class CombinedInput:
|
||||
tool_params: ToolWorkflowParams
|
||||
tool_params: AgentGoalWorkflowParams
|
||||
agent_goal: AgentGoal
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import asyncio
|
||||
|
||||
|
||||
from workflows.tool_workflow import ToolWorkflow
|
||||
from workflows.agent_goal_workflow import AgentGoalWorkflow
|
||||
|
||||
|
||||
async def main():
|
||||
@@ -10,10 +10,10 @@ async def main():
|
||||
|
||||
workflow_id = "agent-workflow"
|
||||
|
||||
handle = client.get_workflow_handle_for(ToolWorkflow.run, workflow_id)
|
||||
handle = client.get_workflow_handle_for(AgentGoalWorkflow.run, workflow_id)
|
||||
|
||||
# Sends a signal to the workflow
|
||||
await handle.signal(ToolWorkflow.end_chat)
|
||||
await handle.signal(AgentGoalWorkflow.end_chat)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import asyncio
|
||||
|
||||
from shared.config import get_temporal_client
|
||||
from workflows.tool_workflow import ToolWorkflow
|
||||
from workflows.agent_goal_workflow import AgentGoalWorkflow
|
||||
|
||||
|
||||
async def main():
|
||||
@@ -12,7 +12,7 @@ async def main():
|
||||
handle = client.get_workflow_handle(workflow_id)
|
||||
|
||||
# Queries the workflow for the conversation history
|
||||
history = await handle.query(ToolWorkflow.get_conversation_history)
|
||||
history = await handle.query(AgentGoalWorkflow.get_conversation_history)
|
||||
|
||||
print("Conversation History")
|
||||
print(history)
|
||||
|
||||
@@ -5,7 +5,7 @@ import concurrent.futures
|
||||
from temporalio.worker import Worker
|
||||
|
||||
from activities.tool_activities import ToolActivities, dynamic_tool_activity
|
||||
from workflows.tool_workflow import ToolWorkflow
|
||||
from workflows.agent_goal_workflow import AgentGoalWorkflow
|
||||
|
||||
from shared.config import get_temporal_client, TEMPORAL_TASK_QUEUE
|
||||
|
||||
@@ -21,10 +21,10 @@ async def main():
|
||||
worker = Worker(
|
||||
client,
|
||||
task_queue=TEMPORAL_TASK_QUEUE,
|
||||
workflows=[ToolWorkflow],
|
||||
workflows=[AgentGoalWorkflow],
|
||||
activities=[
|
||||
activities.prompt_llm,
|
||||
activities.validate_llm_prompt,
|
||||
activities.agent_validatePrompt,
|
||||
activities.agent_toolPlanner,
|
||||
dynamic_tool_activity,
|
||||
],
|
||||
activity_executor=activity_executor,
|
||||
|
||||
@@ -11,7 +11,11 @@ from models.data_types import ConversationHistory, NextStep, ValidationInput
|
||||
with workflow.unsafe.imports_passed_through():
|
||||
from activities.tool_activities import ToolActivities
|
||||
from prompts.agent_prompt_generators import generate_genai_prompt
|
||||
from models.data_types import CombinedInput, ToolWorkflowParams, ToolPromptInput
|
||||
from models.data_types import (
|
||||
CombinedInput,
|
||||
AgentGoalWorkflowParams,
|
||||
ToolPromptInput,
|
||||
)
|
||||
|
||||
from shared.config import TEMPORAL_LEGACY_TASK_QUEUE
|
||||
|
||||
@@ -31,7 +35,7 @@ class ToolData(TypedDict, total=False):
|
||||
|
||||
|
||||
@workflow.defn
|
||||
class ToolWorkflow:
|
||||
class AgentGoalWorkflow:
|
||||
"""Workflow that manages tool execution with user confirmation and conversation history."""
|
||||
|
||||
def __init__(self) -> None:
|
||||
@@ -111,7 +115,7 @@ class ToolWorkflow:
|
||||
prompt=summary_prompt, context_instructions=summary_context
|
||||
)
|
||||
self.conversation_summary = await workflow.start_activity_method(
|
||||
ToolActivities.prompt_llm,
|
||||
ToolActivities.agent_toolPlanner,
|
||||
summary_input,
|
||||
schedule_to_close_timeout=LLM_ACTIVITY_SCHEDULE_TO_CLOSE_TIMEOUT,
|
||||
)
|
||||
@@ -121,7 +125,7 @@ class ToolWorkflow:
|
||||
workflow.continue_as_new(
|
||||
args=[
|
||||
CombinedInput(
|
||||
tool_params=ToolWorkflowParams(
|
||||
tool_params=AgentGoalWorkflowParams(
|
||||
conversation_summary=self.conversation_summary,
|
||||
prompt_queue=self.prompt_queue,
|
||||
),
|
||||
@@ -178,7 +182,7 @@ class ToolWorkflow:
|
||||
agent_goal=agent_goal,
|
||||
)
|
||||
validation_result = await workflow.execute_activity(
|
||||
ToolActivities.validate_llm_prompt,
|
||||
ToolActivities.agent_validatePrompt,
|
||||
args=[validation_input],
|
||||
schedule_to_close_timeout=LLM_ACTIVITY_SCHEDULE_TO_CLOSE_TIMEOUT,
|
||||
start_to_close_timeout=LLM_ACTIVITY_START_TO_CLOSE_TIMEOUT,
|
||||
@@ -208,7 +212,7 @@ class ToolWorkflow:
|
||||
)
|
||||
|
||||
tool_data = await workflow.execute_activity(
|
||||
ToolActivities.prompt_llm,
|
||||
ToolActivities.agent_toolPlanner,
|
||||
prompt_input,
|
||||
schedule_to_close_timeout=LLM_ACTIVITY_SCHEDULE_TO_CLOSE_TIMEOUT,
|
||||
start_to_close_timeout=LLM_ACTIVITY_START_TO_CLOSE_TIMEOUT,
|
||||
Reference in New Issue
Block a user