bsmith3715 commited on
Commit
d1ad093
·
verified ·
1 Parent(s): 938a429

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +7 -3
  2. 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
- # Generate response using RAG system
58
- response = rag_processor.generate_response(message.content)
59
- await cl.Message(content=response).send()
 
 
 
 
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
- response = 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
  )
60
 
61
- return response.choices[0].message.content
 
 
 
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