qdrant-flask / conversation.py
aymanemalih's picture
Upload 6 files
bac8f2c
raw
history blame contribute delete
No virus
1.89 kB
#!/usr/bin/env python3
import openai
import sys
import os
import csv
import json
import lookup
import gpt
openai.api_key = "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"
if not openai.api_key:
openai.api_key = input("Please enter your OpenAI API key: ")
print()
program_name = sys.argv.pop(0)
# CSV processing
csv_file_path = "LIR.csv" # Update with the correct path
with open(csv_file_path, newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
rows = list(reader)
# Configuration Parameters
chunk_size = 4000
overlap = 1000
limit = 20 # Change to 3 to get the top 3 answers
gpt.model = "gpt-3.5-turbo"
# Chunking CSV text
chunks = [row['texte'][i:i + chunk_size] for row in rows for i in range(0, len(row['texte']), chunk_size)]
print("Chunking CSV...\n")
def ask_question(question):
keywords = gpt.get_keywords(question)
matches = lookup.find_matches(chunks, keywords)
top_matches = list(matches.keys())[:limit]
responses = []
for i, chunk_id in enumerate(top_matches):
chunk = chunks[chunk_id]
response = gpt.answer_question(chunk, question)
if response.get("answer_found"):
matched_row = rows[chunk_id]
# Extract specific properties from the matched row
answer = response.get("response")
# Loop through the columns and add them to the JSON object
json_object = {"GPT_Response": answer}
for column_name, column_value in matched_row.items():
json_object[column_name] = column_value.encode("utf-8").decode("utf-8")
responses.append(json_object)
responses.append({"keywords:": keywords})
if not any(response.get("answer_found") for chunk_id in top_matches):
responses.append({"GPT_Response": "I'm sorry, but I can't find that information"})
return responses