|
|
|
from langchain_core.runnables import RunnableConfig |
|
from langchain_core.messages import ( |
|
AIMessage |
|
) |
|
|
|
from langgraph.graph import ( |
|
END, |
|
StateGraph, |
|
) |
|
|
|
from ea4all.src.ea4all_gra.configuration import AgentConfiguration |
|
from ea4all.src.ea4all_gra.data import ( |
|
ListRequirement, |
|
ListObjective, |
|
BusinessCapability, |
|
StakeholderList, |
|
UserJourney, |
|
) |
|
from ea4all.src.shared.utils import ( |
|
get_llm_client, |
|
extract_detailed_business_requirements, |
|
) |
|
from ea4all.src.shared.prompts import LLAMA31_PROMPT_FORMAT |
|
|
|
from ea4all.src.ea4all_gra.togaf_task1.state import Task1State |
|
|
|
|
|
def assess_business_query(state: Task1State, config: RunnableConfig): |
|
"""Identified business requirements, goals, use cases, user journey, stakeholder and business capability from a given business query.""" |
|
|
|
|
|
|
|
|
|
|
|
query = state.get("business_query") |
|
|
|
|
|
configuration = AgentConfiguration.from_runnable_config(config) |
|
model = get_llm_client(configuration.togaf_model, configuration.api_base_url) |
|
|
|
values = {"business_input": query} |
|
final_response=[] |
|
|
|
|
|
response = extract_detailed_business_requirements(model, ListRequirement, "business requirement", values) |
|
business_reqs = "" |
|
try: |
|
for item in response.requirements: |
|
business_reqs += ':'.join([item.category, item.requirement.lower()]) + ";" |
|
final_response += [response.requirements] |
|
except Exception as e: |
|
print(f"Houston, we a {e} thorny problem!") |
|
|
|
|
|
response = extract_detailed_business_requirements(model, ListObjective, "business objective", values) |
|
business_goal=[] |
|
try: |
|
for item in response.objectives: |
|
business_goal.append(item.objective) |
|
final_response += [response.objectives] |
|
except Exception as e: |
|
print(f"Houston, we a {e} thorny problem!") |
|
|
|
|
|
|
|
response = extract_detailed_business_requirements(model, BusinessCapability, "business capabilities", values) |
|
business_capabilities=[] |
|
try: |
|
for item in response.capabilities: |
|
business_capabilities.append(item.capability) |
|
final_response += [response.capabilities] |
|
except Exception as e: |
|
print(f"Houston, we a {e} thorny problem!") |
|
|
|
|
|
|
|
response = extract_detailed_business_requirements(model, StakeholderList, "business stakeholder", values) |
|
business_stakeholder = "" |
|
try: |
|
for item in response.stakeholders: |
|
business_stakeholder += ' '.join([item.stakeholder,item.role.lower(), item.concern]) + "." |
|
final_response += [response.stakeholders] |
|
except Exception as e: |
|
print(f"Houston, we a {e} thorny problem!") |
|
|
|
|
|
|
|
response = extract_detailed_business_requirements(model, UserJourney, "user journey", values) |
|
user_journey = "" |
|
try: |
|
for item in response.userjourney: |
|
user_journey += ':'.join([item.persona,item.step.lower()]) + "," |
|
final_response += [response.userjourney] |
|
except Exception as e: |
|
print(f"Houston, we a {e} thorny problem!") |
|
|
|
name = state.get("next") |
|
|
|
return { |
|
"messages": [AIMessage(content=str(final_response), name=name)], |
|
"requirement": business_reqs, |
|
"intent": business_goal, |
|
"stakeholder": business_stakeholder, |
|
"userjourney": user_journey, |
|
"biz_capability": str(business_capabilities) |
|
} |
|
|
|
|
|
|
|
task1_builder = StateGraph(Task1State) |
|
|
|
|
|
task1_builder.add_node("AssessBusinessQuery", assess_business_query) |
|
|
|
|
|
task1_builder.add_edge("AssessBusinessQuery", END) |
|
task1_builder.set_entry_point("AssessBusinessQuery") |
|
|
|
|
|
task1_builder.set_finish_point('AssessBusinessQuery') |
|
|
|
|
|
task1_graph = task1_builder.compile() |
|
task1_graph.name = "togaf_identify_business_requirements" |
|
|