README / app.py
subashdvorak's picture
Update app.py
d2353f4 verified
import pandas as pd
from langchain_groq import ChatGroq
from langchain_experimental.agents.agent_toolkits import create_csv_agent
import gradio as gr
# Reading a CSV file
csv_file_path = 'final_dataset.csv'
df_csv = pd.read_csv(csv_file_path)
# Initialize the Groq API and the LLM
groq_api = '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'
llm = ChatGroq(temperature=0, model="llama3-70b-8192", api_key=groq_api)
# Create the CSV agent
agent = create_csv_agent(llm, csv_file_path, verbose=True, allow_dangerous_code=True, handle_parsing_errors=True)
# Function to query data
def query_data(query):
response = agent.invoke(query)
return response
# Function for Gradio interface
def get_recommendations(user_query):
additional_query = '''If you can't find the exact response from the dataframe, you can give the responses similar to the query.
If you recommend some places, give their descriptions too in a paragraph.
While giving descriptions, give from the reviews of that place in more than 30 words.
If there are 'hotels' in the query, recommend hotels only not the restaurants and adventures. And same for other place types.
Give their revel ratings too.
Don't try give the descriptions that are not provided in the dataframe.
Try to minimize giving the same descriptions for more than one places. '''
full_query = f"{user_query} {additional_query}"
response = query_data(full_query)
return response['output']
# Create Gradio interface
iface = gr.Interface(
fn=get_recommendations,
inputs=gr.Textbox(label="Ask your query about hotels:", placeholder="Type your query here..."),
outputs=gr.Textbox(label="Response will appear here."),
title="Hotel and Restaurant Recommendation System",
description="Ask for recommendations based on the data in the CSV file."
)
# Launch the Gradio app
iface.launch(share=True)