first push
This commit is contained in:
67
chat/views.py
Normal file
67
chat/views.py
Normal file
@@ -0,0 +1,67 @@
|
||||
import requests
|
||||
from django.db.models import Sum
|
||||
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 schema import get_filters_from_question, apply_date_filter
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
|
||||
# تولید پاسخ نهایی با 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
|
||||
)
|
||||
Reference in New Issue
Block a user