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()