-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgraph.py
49 lines (37 loc) · 1.32 KB
/
graph.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import os
import sys
from typing import TypedDict, Literal
from dotenv import load_dotenv
from agents.helper import read_and_strip_file
from langgraph.graph import StateGraph, END
from agents import generate_article, Rephrase_article , passer , validator
class AgentState(TypedDict):
agent_outcome: str
def save_result_to_file(result, filename):
with open(filename, 'w') as f:
f.write(str(result))
def main():
load_dotenv()
agent_prompt_path = os.path.join('meta_data', 'initial_input.txt')
initial_input = read_and_strip_file(agent_prompt_path)
workflow = StateGraph(AgentState)
# Add Nodes
workflow.add_node("evaluator", passer)
workflow.add_node("Generate", generate_article)
workflow.add_node("Rephrase", Rephrase_article)
# Add Flow
workflow.set_entry_point("evaluator")
workflow.add_conditional_edges(
"evaluator", validator, {"Generate": "Generate", "not_relevant": END}
)
workflow.add_edge("Generate", "Rephrase")
workflow.add_edge("Rephrase", END)
app = workflow.compile()
initial_state = {"agent_outcome": initial_input}
result = app.invoke(initial_state)
print("-"*100)
print("Result:", result)
# Save Result to output.txt
save_result_to_file(result["agent_outcome"], "output.txt")
if __name__ == "__main__":
main()