Spaces:
Sleeping
Sleeping
File size: 4,013 Bytes
422a94c 9b5b26a c19d193 422a94c 8fe992b 422a94c 9b5b26a 422a94c 9b5b26a 422a94c 9b5b26a 8c01ffb 422a94c 6aae614 422a94c ae7a494 422a94c 5d95245 ae7a494 e121372 422a94c 13d500a 8c01ffb 422a94c 8c01ffb 422a94c 8c01ffb 8fe992b 422a94c 8c01ffb 422a94c 8fe992b 422a94c c9e689b 9b5b26a | 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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | # Importiere die notwendigen Bibliotheken und Tools
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool # Stellt sicher, dass FinalAnswerTool importiert wird
from Gradio_UI import GradioUI # Stellt sicher, dass die UI importiert wird
# Definiere dein benutzerdefiniertes Tool (optional, kann später angepasst werden)
@tool
def my_custom_tool(arg1:str, arg2:int)-> str:
"""A tool that does nothing yet
Args:
arg1: the first argument
arg2: the second argument
"""
return "What magic will you build ?"
# Definiere das Zeitzonen-Tool
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""A tool that fetches the current local time in a specified timezone.
Args:
timezone: A string representing a valid timezone (e.g., 'America/New_York').
"""
try:
tz = pytz.timezone(timezone)
local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
return f"The current local time in {timezone} is: {local_time}"
except Exception as e:
return f"Error fetching time for timezone '{timezone}': {str(e)}"
# --- Initialisiere die benötigten Tool-Instanzen ---
final_answer = FinalAnswerTool()
search_tool = DuckDuckGoSearchTool() # Erstelle eine Instanz des Such-Tools
# Lade das Bildgenerierungs-Tool vom Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
# --- Konfiguriere das Sprachmodell ---
# Wähle das Modell (Standard oder Fallback-Endpunkt, falls nötig)
model_id='Qwen/Qwen2.5-Coder-32B-Instruct' # Standardmodell
#model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud' # Fallback Endpunkt, falls Standard überlastet ist
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id=model_id, # Verwende die ausgewählte Modell-ID
custom_role_conversions=None,
)
# --- Lade die Prompt-Vorlagen ---
try:
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
except FileNotFoundError:
print("FEHLER: prompts.yaml nicht gefunden! Stelle sicher, dass die Datei im Space vorhanden ist.")
prompt_templates = {} # Setze leeres Dict, um Absturz zu vermeiden, aber Agent wird nicht richtig funktionieren
except yaml.YAMLError as e:
print(f"FEHLER beim Lesen von prompts.yaml: {e}")
prompt_templates = {} # Setze leeres Dict
# --- Initialisiere den CodeAgent mit den hinzugefügten Tools ---
agent = CodeAgent(
model=model,
# *** HIER IST DIE WICHTIGE ÄNDERUNG ***
# Füge die Variablen/Funktionen der Tools zur Liste hinzu
tools=[
final_answer, # Nicht entfernen!
get_current_time_in_timezone, # Das Zeit-Tool (direkt die Funktion)
search_tool, # Das Web-Such-Tool (die erstellte Instanz)
image_generation_tool # Das Bildgenerierungs-Tool (die geladene Instanz)
# my_custom_tool # Könntest du auch hinzufügen, wenn du es benutzt
],
max_steps=6, # Maximale Anzahl an Zyklen (Thought/Action/Observation)
verbosity_level=1, # Wie gesprächig der Agent ist (0=wenig, 1=mittel, 2=viel)
grammar=None,
planning_interval=None,
name="MyFirstAgent", # Gib deinem Agenten einen Namen (optional)
description="An agent capable of checking time, searching the web, and generating images.", # Beschreibung (optional)
prompt_templates=prompt_templates # Übergib die geladenen Prompts
)
# --- Starte die Gradio Web-Oberfläche ---
# Stelle sicher, dass die GradioUI-Klasse korrekt importiert wurde
if 'GradioUI' in globals():
try:
ui = GradioUI(agent)
ui.launch() # Starte die UI
except Exception as e:
print(f"FEHLER beim Starten der Gradio UI: {e}")
else:
print("FEHLER: GradioUI konnte nicht importiert werdenn.")
|