Spaces:
Sleeping
Sleeping
File size: 2,532 Bytes
d260382 cb249ff d260382 cb249ff 186714c 78fe5ad 281c0ae d260382 a741062 78fe5ad d260382 a741062 cb249ff 78fe5ad d260382 186714c d260382 78fe5ad 186714c 78fe5ad 186714c 78fe5ad 186714c 78fe5ad 186714c d260382 186714c d260382 186714c d260382 186714c |
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 |
from sentence_transformers import SentenceTransformer
from pinecone import Pinecone
import json
import gradio as gr
import os
import openai
# استفاده از متغیر محیطی 'openai' برای کلید API
openai.api_key = os.getenv("openai")
# بارگذاری مدل embedding
model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
# بارگذاری داده (اختیاری)
with open("tiyam_qa_data.json", "r", encoding="utf-8") as f:
data = json.load(f)
# اتصال به Pinecone
pc = Pinecone(api_key="YOUR_PINECONE_API_KEY") # کلید خودت رو اینجا بگذار
index = pc.Index("tiyam-chat")
def retrieve_answer(query, threshold=0.65, top_k=1):
query_embedding = model.encode([query])[0]
result = index.query(vector=query_embedding.tolist(), top_k=top_k, include_metadata=True)
if result['matches'] and result['matches'][0]['score'] > threshold:
metadata = result['matches'][0]['metadata']
return metadata.get('answer', 'پاسخ یافت نشد')
else:
return None
def generate_human_response(context_text):
if not context_text:
return "متأسفم، پاسخ دقیقی برای این سوال نداریم. لطفاً با ما تماس بگیرید."
prompt = (
f"این متن پاسخ سوال مشتری است: \"{context_text}\".\n"
"لطفاً یک پاسخ کوتاه، رسمی و کاملاً مختصر و مفید به زبان فارسی تولید کن که فقط بر اساس همین متن باشد و هیچ اطلاعات اضافی نده."
)
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "شما یک پاسخگوی رسمی شرکت هستید."},
{"role": "user", "content": prompt}
],
temperature=0.2,
max_tokens=100,
)
return response['choices'][0]['message']['content'].strip()
except Exception as e:
return "خطا در پردازش درخواست."
def chat_interface(question):
answer = retrieve_answer(question)
final_answer = generate_human_response(answer)
return final_answer
demo = gr.Interface(
fn=chat_interface,
inputs="text",
outputs="text",
title="چتبات تیام",
description="سؤالات خود را از آژانس دیجیتال مارکتینگ تیام بپرسید."
)
if __name__ == "__main__":
demo.launch()
|