| | import os |
| | import aiohttp |
| | from dotenv import load_dotenv |
| | from urllib.parse import urlencode |
| |
|
| | load_dotenv() |
| |
|
| | async def query_rag_api(question): |
| | """ |
| | Asynchronously query the RAG model via Streamlit endpoint. |
| | |
| | Args: |
| | question (str): The user's question. |
| | |
| | Returns: |
| | dict: Answer, contexts, or error message. |
| | |
| | Note: |
| | Replace API_ENDPOINT with your Space's URL (e.g., https://<your-space-id>.hf.space) |
| | after deployment. |
| | """ |
| | |
| | API_ENDPOINT = "https://huggingface.co/spaces/samim2024/testing" |
| | params = {"query": question} |
| | url = f"{API_ENDPOINT}?{urlencode(params)}" |
| |
|
| | try: |
| | async with aiohttp.ClientSession() as session: |
| | async with session.get(url, timeout=10) as response: |
| | response_dict = await response.json() |
| | if response_dict.get("error"): |
| | return {"error": response_dict["error"], "answer": "", "contexts": []} |
| | return { |
| | "answer": response_dict.get("answer", ""), |
| | "contexts": response_dict.get("contexts", []) |
| | } |
| | except Exception as e: |
| | return {"error": f"Query failed: {str(e)}", "answer": "", "contexts": []} |