Refactoring main
Aggiornato il file .env.example. Aggiunta la funzione available_keys() in app.py per controllare le chiavi API disponibili. Spostato example.py nelle demo. Rimosso requirements.txt.
This commit is contained in:
88
src/app.py
88
src/app.py
@@ -1,41 +1,65 @@
|
||||
import gradio as gr
|
||||
import sys
|
||||
import os
|
||||
import gradio as gr
|
||||
|
||||
# Aggiungi src al Python path per gli import
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from app.tool import ToolAgent
|
||||
|
||||
tool_agent = ToolAgent()
|
||||
def available_keys():
|
||||
"""
|
||||
Controlla quali provider di modelli LLM hanno le loro API keys disponibili
|
||||
come variabili d'ambiente e ritorna una lista di provider disponibili.
|
||||
Se nessuna API key è disponibile, ritorna solo 'mock' come opzione.
|
||||
"""
|
||||
availables = []
|
||||
if os.getenv("GOOGLE_API_KEY"):
|
||||
availables.append("google")
|
||||
if os.getenv("OPENAI_API_KEY"):
|
||||
availables.append("openai")
|
||||
if os.getenv("ANTHROPIC_API_KEY"):
|
||||
availables.append("anthropic")
|
||||
if os.getenv("DEEPSEEK_API_KEY"):
|
||||
availables.append("deepseek")
|
||||
if os.getenv("OLLAMA_MODELS_PATH"):
|
||||
availables.append("ollama")
|
||||
|
||||
def analyze_request(user_input, provider, style):
|
||||
try:
|
||||
return tool_agent.interact(user_input, provider=provider, style=style)
|
||||
except Exception as e:
|
||||
return f"❌ Errore: {str(e)}"
|
||||
return ['mock', *availables]
|
||||
|
||||
with gr.Blocks() as demo:
|
||||
gr.Markdown("# 🤖 Agente di Analisi e Consulenza Crypto")
|
||||
|
||||
with gr.Row():
|
||||
provider = gr.Dropdown(
|
||||
choices=["mock", "openai", "anthropic", "google", "deepseek", "ollama"],
|
||||
value="mock",
|
||||
label="Modello da usare"
|
||||
)
|
||||
style = gr.Dropdown(
|
||||
choices=["conservative", "aggressive"],
|
||||
value="conservative",
|
||||
label="Stile di investimento"
|
||||
)
|
||||
|
||||
user_input = gr.Textbox(label="Richiesta utente")
|
||||
output = gr.Textbox(label="Risultato analisi", lines=12)
|
||||
|
||||
analyze_btn = gr.Button("🔎 Analizza")
|
||||
analyze_btn.click(fn=analyze_request, inputs=[user_input, provider, style], outputs=output)
|
||||
|
||||
########################################
|
||||
# MAIN APP & GRADIO INTERFACE
|
||||
########################################
|
||||
if __name__ == "__main__":
|
||||
demo.launch()
|
||||
######################################
|
||||
# DA FARE PRIMA DI ESEGUIRE L'APP
|
||||
# qui carichiamo le variabili d'ambiente dal file .env
|
||||
# una volta fatto, possiamo usare le API keys senza problemi
|
||||
# quindi non è necessario richiamare load_dotenv() altrove
|
||||
load_dotenv()
|
||||
######################################
|
||||
|
||||
tool_agent = ToolAgent()
|
||||
|
||||
with gr.Blocks() as demo:
|
||||
gr.Markdown("# 🤖 Agente di Analisi e Consulenza Crypto")
|
||||
|
||||
with gr.Row():
|
||||
list_choices = available_keys()
|
||||
provider = gr.Dropdown(
|
||||
choices=list_choices,
|
||||
value=list_choices[0],
|
||||
label="Modello da usare"
|
||||
)
|
||||
style = gr.Dropdown(
|
||||
choices=["conservative", "aggressive"],
|
||||
value="conservative",
|
||||
label="Stile di investimento"
|
||||
)
|
||||
|
||||
user_input = gr.Textbox(label="Richiesta utente")
|
||||
output = gr.Textbox(label="Risultato analisi", lines=12)
|
||||
|
||||
analyze_btn = gr.Button("🔎 Analizza")
|
||||
analyze_btn.click(fn=tool_agent.interact, inputs=[user_input, provider, style], outputs=output)
|
||||
if __name__ == "__main__":
|
||||
demo.launch()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user