67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
import requests
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from rest_framework import status
|
|
from rest_framework.decorators import api_view, permission_classes
|
|
from rest_framework.permissions import AllowAny
|
|
from rest_framework.response import Response
|
|
from openai import OpenAI
|
|
|
|
from chat.schema import get_filters_from_question
|
|
|
|
API_KEY = "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" # ⚠️ جایگزین با کلیدت کن
|
|
RSI_URL='https://rsibackend.rasadyar.com/app/get_ai_response/'
|
|
client = OpenAI(api_key=API_KEY, timeout=60)
|
|
|
|
@api_view(['POST'])
|
|
@permission_classes([AllowAny])
|
|
@csrf_exempt
|
|
def get_ai_response(request):
|
|
question = request.data.get('question')
|
|
|
|
if not question:
|
|
return Response(
|
|
{"error": "Question is required"},
|
|
status=status.HTTP_400_BAD_REQUEST
|
|
)
|
|
|
|
filters_json = get_filters_from_question(question)
|
|
models_info = filters_json.get("models", [])
|
|
req_data={
|
|
"models_info":models_info
|
|
}
|
|
|
|
result_data = requests.post(
|
|
url=RSI_URL,
|
|
json=req_data,
|
|
verify=False
|
|
)
|
|
|
|
result_data = result_data.json()
|
|
|
|
# تولید پاسخ نهایی با GPT
|
|
prompt = f"""
|
|
سوال کاربر: "{question}"
|
|
|
|
دادههای بهدستآمده:
|
|
{result_data}
|
|
|
|
لطفاً یک پاسخ کاملاً روان، خودمونی و قابل فهم برای کاربر فارسیزبان تولید کن.
|
|
"""
|
|
|
|
try:
|
|
response_final = client.chat.completions.create(
|
|
model="gpt-4.1-mini",
|
|
messages=[{"role": "user", "content": prompt}]
|
|
)
|
|
answer = response_final.choices[0].message.content.strip()
|
|
except Exception as e:
|
|
print("Error generating GPT response:", e)
|
|
answer = "متأسفانه در تولید پاسخ مشکلی پیش آمد."
|
|
|
|
return Response(
|
|
{
|
|
"answer": answer,
|
|
"data": result_data
|
|
},
|
|
status=status.HTTP_200_OK
|
|
) |