Chris / app.py
artem5494's picture
Update app.py
84400ca
Raw
History Blame Contribute Delete
1.95 kB
import os
import gradio as gr
from openai import OpenAI
import pandas as pd
import ast
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
# Get value OPEN_API_KEY
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
login = os.environ.get("login")
password = os.environ.get("password")
client = OpenAI(api_key=OPENAI_API_KEY)
# Load embedding dataset
data = pd.read_csv("embeddings.csv")
data["embedding"] = data["embedding"].apply(ast.literal_eval)
def search_reviews(df_original, product_description, without_newlines=False, n=1):
df = df_original.copy()
if without_newlines:
product_description = product_description.replace("\n", " ")
embedding = (
client.embeddings.create(
input=[product_description], model="text-embedding-ada-002"
)
.data[0]
.embedding
)
df["similarities"] = df["embedding"].apply(
lambda x: cosine_similarity(
np.array(x).reshape(1, -1), np.array(embedding).reshape(1, -1)
)
)
res = df.sort_values("similarities", ascending=False).head(n)
return res.reset_index(drop=True)
def generate_response(text):
reference = search_reviews(data, text, without_newlines=False)["Content"][0]
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "system",
"content": f"Generate high-quality rewritten articles, ensuring logical composition, avoiding over-exaggeration, and refraining from any imaginative elements. Use the provided sample text as a reference for the desired writing style:{reference}",
},
{"role": "user", "content": f"{text}"},
],
temperature=0
)
result = completion.choices[0].message.content
return result
iface = gr.Interface(fn=generate_response, inputs="text", outputs="text")
iface.launch(auth=(login, password))