File size: 1,949 Bytes
a86fab8
afea5d5
 
 
 
 
 
 
 
 
a86fab8
 
 
 
afea5d5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84400ca
afea5d5
 
 
 
 
 
a86fab8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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))