|
|
|
import os
|
|
|
|
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
|
|
from swarm_models import Anthropic, OpenAIChat
|
|
|
|
from swarms.prompts.accountant_swarm_prompts import (
|
|
|
|
DECISION_MAKING_PROMPT,
|
|
|
|
DOC_ANALYZER_AGENT_PROMPT,
|
|
|
|
SUMMARY_GENERATOR_AGENT_PROMPT,
|
|
|
|
)
|
|
|
|
from swarms.structs import Agent
|
|
|
|
from swarms.utils.pdf_to_text import pdf_to_text
|
|
|
|
|
|
|
|
# Environment variables
|
|
|
|
load_dotenv()
|
|
|
|
anthropic_api_key = os.getenv("ANTHROPIC_API_KEY")
|
|
|
|
openai_api_key = os.getenv("OPENAI_API_KEY")
|
|
|
|
|
|
|
|
|
|
|
|
# Base llms
|
|
|
|
llm1 = OpenAIChat(
|
|
|
|
openai_api_key=openai_api_key,
|
|
|
|
max_tokens=5000,
|
|
|
|
)
|
|
|
|
|
|
|
|
llm2 = Anthropic(
|
|
|
|
anthropic_api_key=anthropic_api_key,
|
|
|
|
max_tokens=5000,
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# Agents
|
|
|
|
doc_analyzer_agent = Agent(
|
|
|
|
llm=llm2,
|
|
|
|
sop=DOC_ANALYZER_AGENT_PROMPT,
|
|
|
|
max_loops=1,
|
|
|
|
autosave=True,
|
|
|
|
saved_state_path="doc_analyzer_agent.json",
|
|
|
|
)
|
|
|
|
summary_generator_agent = Agent(
|
|
|
|
llm=llm2,
|
|
|
|
sop=SUMMARY_GENERATOR_AGENT_PROMPT,
|
|
|
|
max_loops=1,
|
|
|
|
autosave=True,
|
|
|
|
saved_state_path="summary_generator_agent.json",
|
|
|
|
)
|
|
|
|
decision_making_support_agent = Agent(
|
|
|
|
llm=llm2,
|
|
|
|
sop=DECISION_MAKING_PROMPT,
|
|
|
|
max_loops=1,
|
|
|
|
saved_state_path="decision_making_support_agent.json",
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
pdf_path = "bankstatement.pdf"
|
|
|
|
fraud_detection_instructions = "Detect fraud in the document"
|
|
|
|
summary_agent_instructions = (
|
|
|
|
"Generate an actionable summary of the document with action steps"
|
|
|
|
" to take"
|
|
|
|
)
|
|
|
|
decision_making_support_agent_instructions = (
|
|
|
|
"Provide decision making support to the business owner:"
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# Transform the pdf to text
|
|
|
|
pdf_text = pdf_to_text(pdf_path)
|
|
|
|
print(pdf_text)
|
|
|
|
|
|
|
|
|
|
|
|
# Detect fraud in the document
|
|
|
|
fraud_detection_agent_output = doc_analyzer_agent.run(
|
|
|
|
f"{fraud_detection_instructions}: {pdf_text}"
|
|
|
|
)
|
|
|
|
|
|
|
|
# Generate an actionable summary of the document
|
|
|
|
summary_agent_output = summary_generator_agent.run(
|
|
|
|
f"{summary_agent_instructions}: {fraud_detection_agent_output}"
|
|
|
|
)
|
|
|
|
|
|
|
|
# Provide decision making support to the accountant
|
|
|
|
decision_making_support_agent_output = (
|
|
|
|
decision_making_support_agent.run(
|
|
|
|
f"{decision_making_support_agent_instructions}:"
|
|
|
|
f" {summary_agent_output}"
|
|
|
|
)
|
|
|
|
)
|