File size: 2,657 Bytes
ee5d3c7 bbea41a ee5d3c7 bbea41a ee5d3c7 bbea41a ee5d3c7 |
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 64 65 66 67 68 69 70 71 72 |
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
from openai import OpenAI
import ast
import gradio as gr
# Inicjalizuj klienta API
client = OpenAI()
# Wczytaj plik CSV
df = pd.read_csv('ally.csv')
# Przekszta艂膰 stringi z powrotem do list
df['embedding'] = df['embedding'].apply(ast.literal_eval)
# Nast臋pnie przekszta艂膰 listy na tablice numpy
df['embedding'] = df['embedding'].apply(np.array)
def znajdz_najblizsze_teksty(tekst_wejsciowy, df, client, top_n=2):
# Wygeneruj embedding dla tekstu wej艣ciowego
response = client.embeddings.create(input=tekst_wejsciowy, model="text-embedding-3-large")
embedding_wejsciowy = response.data[0].embedding
# Oblicz podobie艅stwo kosinusowe mi臋dzy embeddingiem wej艣ciowym a wszystkimi innymi embeddingami
df['podobienstwo'] = df['embedding'].apply(lambda x: cosine_similarity([x], [embedding_wejsciowy])[0][0])
# Posortuj DataFrame wed艂ug podobie艅stwa i zwr贸膰 top_n najbardziej podobnych tekst贸w
return df.sort_values('podobienstwo', ascending=False).head(top_n)['text']
# U偶yj funkcji do znalezienia najbardziej podobnych tekst贸w
def answer(tekst_wejsciowy, history):
najblizsze_teksty = znajdz_najblizsze_teksty(tekst_wejsciowy, df, client)
kontekst = "\n".join(najblizsze_teksty)
prompt = f"Kontekst: {kontekst}\n Pytanie: {tekst_wejsciowy}"
response = client.chat.completions.create(
model="gpt-4-turbo",
messages=[
{
"role": "system",
"content": "Jeste艣 asystentk膮 koordynator贸w i koordynatorek dost臋pno艣ci. Odpowiadasz uprzejmie i konkretnie. Czasem mo偶esz poflirtowa膰. Do odpowiedzi wykorzystujesz dostarczony kontekst. Odpowied藕 sformatuj w Markdown"
},
{
"role": "user",
"content": prompt
}
],
temperature=0.1,
max_tokens=512,
top_p=1,
frequency_penalty=0,
presence_penalty=0)
odp = response.choices[0].message.content
return(odp)
demo = gr.ChatInterface(
fn = answer,
title = "Ally - asystentka koordynator贸w dost臋pno艣ci",
description= "Ally jest asystentk膮, kt贸ra odpowie na pytania dotycz膮ce dost臋pno艣ci. Du偶o si臋 nauczy艂a i wci膮偶 si臋 uczy, ale mo偶e jednak pope艂nia膰 b艂臋dy.",
clear_btn= None,
submit_btn= "Zapytaj",
retry_btn=None,
undo_btn=None,
examples=[
"Jestem zupe艂nie 艣wie偶ym koordynatorem dost臋pno艣ci i nie wiem, od czego zacz膮膰.",
"Za co odpowiada koordynator do spraw dost臋pno艣ci?",
"Jakie wymiary powinna mie膰 kabina windy?",
"Co to jest plan wdra偶ania dost臋pno艣ci?",
"Czym jest deklaracja dost臋pno艣ci?"
]
).launch() |