Spaces:
Running
Running
File size: 3,677 Bytes
d2dc763 9b5b26a d2dc763 c19d193 d2dc763 6aae614 9b5b26a cfb5578 9b5b26a 6b449ac 696c962 73be253 20d75d2 8a10c10 dbfe74a d2dc763 a3cfb1d dbfe74a d2dc763 13a73d4 d2dc763 13a73d4 d2dc763 13a73d4 8c01ffb 6aae614 0759335 ae7a494 e121372 bf6d34c 29ec968 fe328e0 13d500a 8c01ffb 9b5b26a 8c01ffb 861422e 9b5b26a 8c01ffb 8fe992b 2383300 8c01ffb 861422e 8fe992b ba635ee 13bec1b ba635ee 13bec1b ba635ee 13bec1b ba635ee 13bec1b ba635ee 13bec1b ba635ee 20d75d2 |
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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
import os
import requests
import random
import yaml
import datetime
import pytz
import gradio as gr
from gtts import gTTS # Use Google TTS instead of pyttsx3
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
from tools.web_search import DuckDuckGoSearchTool
from tools.visit_webpage import VisitWebpageTool
from Code_Functions import speak_text
# # Define the audio output path
# AUDIO_OUTPUT_PATH = "/tmp/response.mp3"
# def speak_text(text):
# """Convert text to speech using gTTS and save as an MP3 file."""
# tts = gTTS(text=text, lang='en')
# tts.save(AUDIO_OUTPUT_PATH)
# return AUDIO_OUTPUT_PATH # Return the file path for Gradio Audio component
@tool
def search_dad_jokes(term: str) -> str:
"""A tool that searches for dad jokes containing a specific term.
Args:
term: The keyword to search for in dad jokes.
"""
try:
headers = {
"Accept": "application/json",
"User-Agent": "YourAppName (https://yourappurl.com)"
}
response = requests.get(f"https://icanhazdadjoke.com/search?term={term}", headers=headers)
data = response.json()
if data['results']:
jokes = [joke['joke'] for joke in data['results']]
response_text = f"Found {len(jokes)} jokes:\n" + "\n\n".join(jokes)
else:
response_text = f"No jokes found for the term '{term}'."
except Exception as e:
response_text = f"Error searching for jokes: {str(e)}"
# Generate audio using gTTS
audio_file = speak_text(response_text)
return response_text, audio_file # Return text and audio file path
final_answer = FinalAnswerTool()
web_search_tool = DuckDuckGoSearchTool()
visit_webpage_tool = VisitWebpageTool()
# If the agent does not answer, the model is overloaded, please use another model or the following Hugging Face Endpoint that also contains qwen2.5 coder:
# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud'
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',# it is possible that this model may be overloaded
custom_role_conversions=None,
)
# Import tool from Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
agent = CodeAgent(
model=model,
tools=[visit_webpage_tool, web_search_tool, final_answer, image_generation_tool, search_dad_jokes], ## add your tools here (don't remove final answer)
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
# #Gradio interface with text and audio output
# def gradio_search_jokes(word):
# """Wrapper function for Gradio to call search_dad_jokes and generate audio."""
# response_text, audio_file = search_dad_jokes(word) # Ensure search_dad_jokes returns (text, file path)
# return response_text, audio_file
# #Define the Gradio UI
# with gr.Blocks() as demo:
# gr.Markdown("### Dad Jokes Finder with AI & Text-to-Speech 🎙️")
# with gr.Row():
# input_box = gr.Textbox(label="Enter a word")
# output_text = gr.Textbox(label="Jokes Found")
# output_audio = gr.Audio(label="Audio Pronunciation", type="filepath")
# btn = gr.Button("Get Jokes")
# btn.click(gradio_search_jokes, inputs=input_box, outputs=[output_text, output_audio])
# demo.launch()
GradioUI(agent).launch()
|