Spaces:
Runtime error
Runtime error
import pandas as pd | |
from sklearn.metrics.pairwise import cosine_similarity | |
from sentence_transformers import SentenceTransformer | |
import google.generativeai as genai | |
class TicketResolver: | |
def __init__(self, csv_path): | |
self.df = pd.read_csv(csv_path) | |
self.model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2') | |
self.issue_embeddings = self.model.encode(self.df['Ticket_Description'].tolist()) | |
genai.configure(api_key="AIzaSyAFG94rVbm9eWepO5uPGsMha8XJ-sHbMdA") | |
self.genai_model = genai.GenerativeModel('gemini-pro') | |
def find_relevant_issues(self, query, ticket_type=None): | |
df_filtered = self.df[self.df['Ticket_Status'] == "Closed"] | |
if ticket_type: | |
df_filtered = df_filtered[df_filtered['Ticket_Type'] == ticket_type] | |
query_embedding = self.model.encode([query]) | |
issue_embeddings = self.model.encode(df_filtered['Ticket_Description'].tolist()) | |
scores = cosine_similarity(query_embedding, issue_embeddings)[0] | |
top_3_indices = scores.argsort()[-3:][::-1] | |
resolutions = [] | |
issue_resolution_pairs = [] | |
for index in top_3_indices: | |
# Ensure accessing the correct DataFrame | |
if pd.notna(df_filtered.iloc[index]['Resolution']): | |
issue = df_filtered.iloc[index]['Ticket_Description'] | |
resolution = df_filtered.iloc[index]['Resolution'] | |
print(f"Issue: {issue}") | |
print(f"Resolution: {resolution}\n") | |
issue_resolution_pairs.append((issue, resolution)) | |
resolutions.append(df_filtered.iloc[index]['Resolution']) | |
return issue_resolution_pairs, resolutions | |
def generate_resolution(self, retrieved_resolutions): | |
combined_resolutions = " ".join([str(resolution) for resolution in retrieved_resolutions if pd.notna(resolution)]) | |
prompt = f"Based on these resolutions: {combined_resolutions} Generate a generic resolution combining all:" | |
completion = self.genai_model.generate_content(prompt) | |
generated_answer = completion.text | |
return generated_answer | |
examples=["Server out of memory","Wifi connection issues","OS boot failure","Procedure to apply leave requests"] | |
if __name__ == "__main__": | |
csv_path = "ticket_dataset.csv" | |
ticket_resolver = TicketResolver(csv_path) | |
query = "Server out of memory" | |
issue_resolution_pairs,resolutions = ticket_resolver.find_relevant_issues(query) | |
final_resolution = ticket_resolver.generate_resolution(issue_resolution_pairs) | |
print("Final resolution:", final_resolution) | |