Spaces:
Sleeping
Sleeping
Upload 2 files
Browse files- app.py +7 -3
- rag_processor.py +9 -6
app.py
CHANGED
|
@@ -54,9 +54,13 @@ async def main(message: cl.Message):
|
|
| 54 |
# Handle chat messages
|
| 55 |
if message.content:
|
| 56 |
try:
|
| 57 |
-
#
|
| 58 |
-
|
| 59 |
-
await
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
except Exception as e:
|
| 61 |
await cl.Message(content=f"Error processing your message: {e}").send()
|
| 62 |
return
|
|
|
|
| 54 |
# Handle chat messages
|
| 55 |
if message.content:
|
| 56 |
try:
|
| 57 |
+
# Create a message placeholder
|
| 58 |
+
msg = cl.Message(content="")
|
| 59 |
+
await msg.send()
|
| 60 |
+
|
| 61 |
+
# Stream the response
|
| 62 |
+
async for chunk in rag_processor.generate_response(message.content):
|
| 63 |
+
await msg.stream_token(chunk)
|
| 64 |
except Exception as e:
|
| 65 |
await cl.Message(content=f"Error processing your message: {e}").send()
|
| 66 |
return
|
rag_processor.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
import os
|
| 2 |
-
from typing import List
|
| 3 |
import openai
|
| 4 |
from sentence_transformers import SentenceTransformer
|
| 5 |
import faiss
|
|
@@ -35,8 +35,8 @@ class RAGProcessor:
|
|
| 35 |
|
| 36 |
return [self.documents[i] for i in indices[0]]
|
| 37 |
|
| 38 |
-
def generate_response(self, query: str) -> str:
|
| 39 |
-
"""Generate a response using OpenAI API with retrieved context."""
|
| 40 |
relevant_docs = self.retrieve_relevant_context(query)
|
| 41 |
context = "\n".join(relevant_docs)
|
| 42 |
|
|
@@ -48,14 +48,17 @@ Given the context information, please answer the following question. If the cont
|
|
| 48 |
Question: {query}
|
| 49 |
Answer:"""
|
| 50 |
|
| 51 |
-
|
| 52 |
model="gpt-3.5-turbo",
|
| 53 |
messages=[
|
| 54 |
{"role": "system", "content": "You are a helpful Pilates instructor assistant. Use the provided context to answer questions accurately."},
|
| 55 |
{"role": "user", "content": prompt}
|
| 56 |
],
|
| 57 |
temperature=0.7,
|
| 58 |
-
max_tokens=500
|
|
|
|
| 59 |
)
|
| 60 |
|
| 61 |
-
|
|
|
|
|
|
|
|
|
| 1 |
import os
|
| 2 |
+
from typing import List, Generator
|
| 3 |
import openai
|
| 4 |
from sentence_transformers import SentenceTransformer
|
| 5 |
import faiss
|
|
|
|
| 35 |
|
| 36 |
return [self.documents[i] for i in indices[0]]
|
| 37 |
|
| 38 |
+
def generate_response(self, query: str) -> Generator[str, None, None]:
|
| 39 |
+
"""Generate a streaming response using OpenAI API with retrieved context."""
|
| 40 |
relevant_docs = self.retrieve_relevant_context(query)
|
| 41 |
context = "\n".join(relevant_docs)
|
| 42 |
|
|
|
|
| 48 |
Question: {query}
|
| 49 |
Answer:"""
|
| 50 |
|
| 51 |
+
stream = self.openai_client.chat.completions.create(
|
| 52 |
model="gpt-3.5-turbo",
|
| 53 |
messages=[
|
| 54 |
{"role": "system", "content": "You are a helpful Pilates instructor assistant. Use the provided context to answer questions accurately."},
|
| 55 |
{"role": "user", "content": prompt}
|
| 56 |
],
|
| 57 |
temperature=0.7,
|
| 58 |
+
max_tokens=500,
|
| 59 |
+
stream=True
|
| 60 |
)
|
| 61 |
|
| 62 |
+
for chunk in stream:
|
| 63 |
+
if chunk.choices[0].delta.content is not None:
|
| 64 |
+
yield chunk.choices[0].delta.content
|