From 9afe21e462a7587b2e594f1c1be636ff1c244387 Mon Sep 17 00:00:00 2001 From: radu-mocanu Date: Mon, 7 Apr 2025 10:51:02 +0300 Subject: [PATCH] chore: improve ticket classification sample --- samples/ticket-classification/README.md | 5 +- samples/ticket-classification/agent.mermaid | 19 ++- .../generic-escalation-app-solution-1.0.0.zip | Bin 0 -> 68367 bytes samples/ticket-classification/main.py | 126 ++++++++++++------ samples/ticket-classification/uipath.json | 17 ++- 5 files changed, 108 insertions(+), 59 deletions(-) create mode 100644 samples/ticket-classification/escalation_app_solution/generic-escalation-app-solution-1.0.0.zip diff --git a/samples/ticket-classification/README.md b/samples/ticket-classification/README.md index d4b84e38..e7bdd04d 100644 --- a/samples/ticket-classification/README.md +++ b/samples/ticket-classification/README.md @@ -1,6 +1,6 @@ # Support Ticket Classification System -Use LangGraph with Azure OpenAI to automatically classify support tickets into predefined categories with confidence scores. UiPath Orchestrator API integration for human approval step. +Use LangGraph with Azure OpenAI to automatically classify support tickets into predefined categories with confidence scores. UiPath Action Center integration for human approval step. ## Debug @@ -52,7 +52,8 @@ The input ticket should be in the following format: ```json { "message": "The ticket message or description", - "ticket_id": "Unique ticket identifier" + "ticket_id": "Unique ticket identifier", + "assignee"[optional]: "username or email of the person assigned to handle escalations" } ``` diff --git a/samples/ticket-classification/agent.mermaid b/samples/ticket-classification/agent.mermaid index 53e6c730..c141ca69 100644 --- a/samples/ticket-classification/agent.mermaid +++ b/samples/ticket-classification/agent.mermaid @@ -1,16 +1,21 @@ -%%{init: {'flowchart': {'curve': 'linear'}}}%% +--- +config: + flowchart: + curve: linear +--- graph TD; __start__([

__start__

]):::first + prepare_input(prepare_input) classify(classify) - create_action(create_action) - human_approval(human_approval) + human_approval_node(human_approval_node) notify_team(notify_team) __end__([

__end__

]):::last - __start__ --> classify; - classify --> create_action; - create_action --> human_approval; - human_approval --> notify_team; + __start__ --> prepare_input; + classify --> human_approval_node; notify_team --> __end__; + prepare_input --> classify; + human_approval_node -.-> classify; + human_approval_node -.-> notify_team; classDef default fill:#f2f0ff,line-height:1.2 classDef first fill-opacity:0 classDef last fill:#bfb6fc diff --git a/samples/ticket-classification/escalation_app_solution/generic-escalation-app-solution-1.0.0.zip b/samples/ticket-classification/escalation_app_solution/generic-escalation-app-solution-1.0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..2b1bd169ad25f2370b817f5b3432668988d6ad95 GIT binary patch literal 68367 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 GraphState: + return GraphState( + message=graph_input.message, + ticket_id=graph_input.ticket_id, + assignee=graph_input.assignee, + messages=[ + SystemMessage(content=system_message.format(format_instructions=output_parser.get_format_instructions())), + HumanMessage(content=graph_input.message) # Add the initial human message + ], + last_predicted_category=None, + human_approval=None, + ) def get_azure_openai_api_key() -> str: """Get Azure OpenAI API key from environment or UiPath.""" @@ -78,8 +85,13 @@ def get_azure_openai_api_key() -> str: return api_key +def decide_next_node(state: GraphState) -> Literal["classify", "notify_team"]: + if state["human_approval"] is True: + return "notify_team" + + return "classify" -async def classify(state: GraphState) -> GraphState: +async def classify(state: GraphState) -> Command: """Classify the support ticket using LLM.""" llm = AzureChatOpenAI( azure_deployment="gpt-4o-mini", @@ -87,51 +99,77 @@ async def classify(state: GraphState) -> GraphState: azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"), api_version="2024-10-21" ) - _prompt = prompt.partial( - format_instructions=output_parser.get_format_instructions() - ) - chain = _prompt | llm | output_parser + + if state.get("last_predicted_category", None): + predicted_category = state["last_predicted_category"] + state["messages"].append(HumanMessage(content=f"The ticket is 100% not part of the category '{predicted_category}'. Choose another one.")) + chain = llm | output_parser try: - result = await chain.ainvoke({"ticket_text": state.message}) - print(result) - state.label = result.label - state.confidence = result.confidence + result = await chain.ainvoke(state["messages"]) logger.info( f"Ticket classified with label: {result.label} confidence score: {result.confidence}" ) - return state + return Command( + update={ + "confidence": result.confidence, + "label": result.label, + "last_predicted_category": result.label, + "messages": state["messages"], + } + ) except Exception as e: logger.error(f"Classification failed: {str(e)}") - state.label = "error" - state.confidence = 0.0 - return state + return Command( + update={ + "label": "error", + "confidence": "0.0", + } + ) -async def wait_for_human(state: GraphState) -> GraphState: +async def wait_for_human(state: GraphState) -> Command: logger.info("Wait for human approval") - feedback = interrupt(f"Label: {state.label} Confidence: {state.confidence}") - - if isinstance(feedback, bool) and feedback is True: - return Command(goto="notify_team") - else: - return Command(goto=END) + ticket_id = state["ticket_id"] + ticket_message = state["messages"][1].content + label = state["label"] + confidence = state["confidence"] + action_data = interrupt(CreateAction(name="escalation_agent_app", + title="Action Required: Review classification", + data={ + "AgentOutput": ( + f"This is how I classified the ticket: '{ticket_id}'," + f" with message '{ticket_message}' \n" + f"Label: '{label}'" + f" Confidence: '{confidence}'" + ), + "AgentName": "ticket-classification "}, + app_version=1, + assignee=state.get("assignee", None), + )) + + return Command( + update={ + "human_approval": isinstance(action_data["Answer"], bool) and action_data["Answer"] is True + } + ) -async def notify_team(state: GraphState) -> GraphState: +async def notify_team(state: GraphState) -> GraphOutput: logger.info("Send team email notification") - print(state) - return state + return GraphOutput(label=state["label"], confidence=state["confidence"]) """Process a support ticket through the workflow.""" builder = StateGraph(GraphState, input=GraphInput, output=GraphOutput) +builder.add_node("prepare_input", prepare_input) builder.add_node("classify", classify) -builder.add_node("human_approval", wait_for_human) +builder.add_node("human_approval_node", wait_for_human) builder.add_node("notify_team", notify_team) -builder.add_edge(START, "classify") -builder.add_edge("classify", "human_approval") -builder.add_edge("human_approval", "notify_team") +builder.add_edge(START, "prepare_input") +builder.add_edge("prepare_input", "classify") +builder.add_edge("classify", "human_approval_node") +builder.add_conditional_edges("human_approval_node", decide_next_node) builder.add_edge("notify_team", END) diff --git a/samples/ticket-classification/uipath.json b/samples/ticket-classification/uipath.json index ef5601c5..f440fc9b 100644 --- a/samples/ticket-classification/uipath.json +++ b/samples/ticket-classification/uipath.json @@ -2,12 +2,20 @@ "entryPoints": [ { "filePath": "agent", - "uniqueId": "59a8e85c-cec2-414c-9201-3f6b076e05dd", + "uniqueId": "525ea50d-c54f-4185-94e2-501fe9ab341a", "type": "agent", "input": { "type": "object", "properties": { "message": { + "title": "Message", + "type": "string" + }, + "ticket_id": { + "title": "Ticket Id", + "type": "string" + }, + "assignee": { "anyOf": [ { "type": "string" @@ -16,11 +24,8 @@ "type": "null" } ], - "title": "Message" - }, - "ticket_id": { - "title": "Ticket Id", - "type": "string" + "default": null, + "title": "Assignee" } }, "required": [