cynthesis-v4 / app.py
abdoh-alkhateeb's picture
Added basic logging functionality (#1)
f351557
raw
history blame
No virus
2.98 kB
import logging
import json
import gradio as gr
from dotenv import load_dotenv
from datetime import datetime
from agents.accountability_agent import AccountabilityAgent
from agents.outline_agent import OutlineAgent
from agents.research_agent import ResearchAgent
from agents.synthesis_agent import SynthesisAgent
from agents.thinking_ladder_agent import ThinkingLadderAgent
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
load_dotenv()
outline_agent = OutlineAgent()
research_agent = ResearchAgent()
thinking_ladder_agent = ThinkingLadderAgent()
synthesis_agent = SynthesisAgent()
accountability_agent = AccountabilityAgent()
logs = []
def save_logs_to_json(logs):
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f'logs_{timestamp}.json'
with open(filename, 'w') as f:
json.dump(logs, f, indent=4)
def main(query: str) -> tuple[str, str, float]:
log_entry = {}
logging.info(f"Received query: {query}")
log_entry['query'] = query
main_title, themes, metrics_a = outline_agent.run(query)
logging.info(f"OutlineAgent output - Main Title: {main_title}, Themes: {themes}, Metrics: {metrics_a}")
log_entry['outline_agent'] = {
'main_title': main_title,
'themes': themes,
'metrics': metrics_a
}
sources, metrics_b = research_agent.run(themes)
logging.info(f"ResearchAgent output - Sources: {sources}, Metrics: {metrics_b}")
log_entry['research_agent'] = {
'sources': sources,
'metrics': metrics_b
}
classified_sources, metrics_c = thinking_ladder_agent.run(themes, sources)
logging.info(f"ThinkingLadderAgent output - Classified Sources: {classified_sources}, Metrics: {metrics_c}")
log_entry['thinking_ladder_agent'] = {
'classified_sources': classified_sources,
'metrics': metrics_c
}
synthesis, metrics_d = synthesis_agent.run(main_title, themes, classified_sources)
logging.info(f"SynthesisAgent output - Synthesis: {synthesis}, Metrics: {metrics_d}")
log_entry['synthesis_agent'] = {
'synthesis': synthesis,
'metrics': metrics_d
}
accountability, metrics_e = accountability_agent.run(query, synthesis)
logging.info(f"AccountabilityAgent output - Accountability: {accountability}, Metrics: {metrics_e}")
log_entry['accountability_agent'] = {
'accountability': accountability,
'metrics': metrics_e
}
cost = sum(list(map(lambda metrics: metrics["cost"], [metrics_a, metrics_b, metrics_c, metrics_d, metrics_e])))
logging.info(f"Total Cost: {cost}")
log_entry['total_cost'] = cost
logs.append(log_entry)
save_logs_to_json(logs)
return synthesis, accountability, cost
gr.Interface(
fn=main,
inputs=gr.Textbox(label="Query:"),
outputs=[gr.Markdown(label="Generated Synthesis:"), gr.Markdown(label="Accountability:"), gr.Number(label="Cost ($):")],
).launch()