Spaces:
Runtime error
Runtime error
feat: Enable MCP
Browse filesHello! This is an automated PR adding MCP compatibility to your AI App 🤖.
This PR introduces two improvements:
1. Adds docstrings to the functions in the app file that are directly connected to the Gradio UI, for the downstream LLM to use.
2. Enables the Model-Compute-Platform by adding `mcp_server=True` to the `.launch()` call.
No other logic has been changed. Please review and merge if it looks good!Learn more about MCP compatibility in Spaces here: https://huggingface.co/changelog/add-compatible-spaces-to-your-mcp-tools
app.py
CHANGED
|
@@ -113,7 +113,26 @@ def audio_to_base64(data, rate=16000):
|
|
| 113 |
return encoded_string
|
| 114 |
|
| 115 |
def process_audio_rag(audio_file_path, query, chunk_length=30, use_openai=False, openai_key=None):
|
| 116 |
-
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 117 |
if not audio_file_path:
|
| 118 |
return "Please upload an audio file", None, None
|
| 119 |
|
|
@@ -210,7 +229,7 @@ with gr.Blocks(title="AudioRAG Demo") as demo:
|
|
| 210 |
|
| 211 |
gr.Examples(
|
| 212 |
examples=[
|
| 213 |
-
["test.m4a", "Who
|
| 214 |
],
|
| 215 |
inputs=[audio_input, query_input, chunk_length]
|
| 216 |
)
|
|
@@ -224,4 +243,4 @@ with gr.Blocks(title="AudioRAG Demo") as demo:
|
|
| 224 |
if __name__ == "__main__":
|
| 225 |
# Load model on startup
|
| 226 |
load_model()
|
| 227 |
-
demo.launch()
|
|
|
|
| 113 |
return encoded_string
|
| 114 |
|
| 115 |
def process_audio_rag(audio_file_path, query, chunk_length=30, use_openai=False, openai_key=None):
|
| 116 |
+
"""
|
| 117 |
+
Main processing function for audio RAG (Retrieval-Augmented Generation).
|
| 118 |
+
|
| 119 |
+
This function takes an audio file, splits it into chunks, embeds each chunk,
|
| 120 |
+
searches for the most relevant chunks based on a query, and optionally generates
|
| 121 |
+
a textual answer using OpenAI's API.
|
| 122 |
+
|
| 123 |
+
Args:
|
| 124 |
+
audio_file_path (str): Path to the uploaded audio file.
|
| 125 |
+
query (str): Search query to find relevant audio chunks.
|
| 126 |
+
chunk_length (int): Length of each audio chunk in seconds. Defaults to 30.
|
| 127 |
+
use_openai (bool): Whether to use OpenAI API for answer generation. Defaults to False.
|
| 128 |
+
openai_key (str): OpenAI API key for generating textual answers. Defaults to None.
|
| 129 |
+
|
| 130 |
+
Returns:
|
| 131 |
+
tuple: A tuple containing:
|
| 132 |
+
- result_text (str): Text describing the search results and optional AI-generated answer.
|
| 133 |
+
- first_chunk_path (str): Path to the saved audio file of the top matching chunk.
|
| 134 |
+
- fig (matplotlib.figure.Figure): Matplotlib figure showing the waveform of the top chunk.
|
| 135 |
+
"""
|
| 136 |
if not audio_file_path:
|
| 137 |
return "Please upload an audio file", None, None
|
| 138 |
|
|
|
|
| 229 |
|
| 230 |
gr.Examples(
|
| 231 |
examples=[
|
| 232 |
+
["test.m4a", "Who's the podcast host?", 30],
|
| 233 |
],
|
| 234 |
inputs=[audio_input, query_input, chunk_length]
|
| 235 |
)
|
|
|
|
| 243 |
if __name__ == "__main__":
|
| 244 |
# Load model on startup
|
| 245 |
load_model()
|
| 246 |
+
demo.launch(mcp_server=True)
|