Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| from smolagents import tool | |
| import litellm | |
| from dotenv import load_dotenv | |
| import os | |
| import whisper | |
| from pathlib import Path | |
| def image_interpretation(file:str) ->str: | |
| """ | |
| Returns a high quality textual description of a provided image | |
| Args: | |
| file: A .png or .jpg image provided by the user | |
| Returns: | |
| Text describing the scene | |
| Example: | |
| query 1: dog.png | |
| output 1: A golden retriever sitting on the beach at mid-day | |
| query 2: scene.jpg | |
| output 2: A landscape picture of sunrise at a mountain range | |
| """ | |
| load_dotenv() | |
| key = os.getenv("GROQ_API_KEY") | |
| prompt = f""" | |
| Open the image at {file} and analyze it and understand it. | |
| Generate a high quality textual description of what you see, it has to be detailed | |
| and accurate, don't make up anything you don't see in the image. | |
| Return ONLY the textual description. | |
| """ | |
| message = [{'role':'user', 'content':prompt}] | |
| response = litellm.completion(model="groq/llama-3.3-70b-versatile", messages=message, api_key=key) | |
| description = response.choices[0].message.content | |
| return description | |
| def create_transcripts(file:str) -> str: | |
| """ | |
| Returns high quality transcripts of audio files | |
| Args: | |
| file: Users .mp3 file containing audio | |
| Returns: | |
| Text file (transcript of conversation) | |
| Example: | |
| file: hello_world.mp3 | |
| output: "Hello world, I am a computer" | |
| """ | |
| file_path = Path(file).resolve() | |
| model = whisper.load_model("base") | |
| result = model.transcribe(str(file_path)) | |
| return result["text"] | |
| def file_handling(file:str) -> pd.DataFrame: | |
| """ | |
| Returns excel sheets and csv files converted into a pandas Dataframe | |
| Args: | |
| file: The file path for the | |
| Outputs: | |
| The user's original content but as a pandas dataframe | |
| """ | |
| extension = file.split('.')[-1] | |
| if extension == 'xlsx': | |
| df = pd.read_excel(f"{file}") | |
| elif extension == 'csv': | |
| df = pd.read_csv(f"{file}") | |
| else: | |
| df = "Sorry, can't open any other files" | |
| return df | |
| def fix_input(query:str) -> str: | |
| """ | |
| Handles incomplete, missing or jumbled user input | |
| Args: | |
| query: User query that can potentially contain formatting errors like missing errors, | |
| spelling mistakes, jumbled word letter, etc. | |
| Returns: | |
| The corrected user input, which can be interpreted properly in natural language | |
| Example: | |
| query 1: What is th capirsl o Franc | |
| output 1: What is the capital of France? | |
| query 2: I am planning a road trip with my family of 4. Which should I rent? | |
| output 2: I am planning a road trip with my family of 4. Which car should I rent? | |
| """ | |
| load_dotenv() | |
| key = os.getenv("GROQ_API_KEY") | |
| prompt = f""" Is the user's question: {query} in the correct natural language format, is it clear? | |
| Can you understand it as it is? If yes, then return the same query. If not, try (i) correcting | |
| spelling mistakes (ii) filling in missing letters / words (iii) re-arranging jumbled words / word orders | |
| (iv) reversing the string (v) any other suitable string and sentence operations. | |
| Finally return ONLY the corrected string. | |
| """ | |
| message = [{"role": "user", "content": prompt}] | |
| response = litellm.completion(model="groq/llama-3.3-70b-versatile", messages=message, api_key=key) | |
| corrected_query = response.choices[0].message.content | |
| return corrected_query |