1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import openai
- import reflex as rx
- class ChatappState(rx.State):
- # The current question being asked.
- question: str
- # Keep track of the chat history as a list of (question, answer) tuples.
- chat_history: list[tuple[str, str]]
- def answer(self):
- # Our chatbot is not very smart right now...
- answer = "I don't know!"
- self.chat_history.append((self.question, answer))
- def answer2(self):
- # Our chatbot is not very smart right now...
- answer = "I don't know!"
- self.chat_history.append((self.question, answer))
- # Clear the question input.
- self.question = ""
- async def answer3(self):
- import asyncio
- # Our chatbot is not very smart right now...
- answer = "I don't know!"
- self.chat_history.append((self.question, ""))
- # Clear the question input.
- self.question = ""
- # Yield here to clear the frontend input before continuing.
- yield
- for i in range(len(answer)):
- await asyncio.sleep(0.1)
- self.chat_history[-1] = (self.chat_history[-1][0], answer[: i + 1])
- yield
- def answer4(self):
- # Our chatbot has some brains now!
- session = openai.ChatCompletion.create(
- model="gpt-3.5-turbo",
- messages=[{"role": "user", "content": self.question}],
- stop=None,
- temperature=0.7,
- stream=True,
- )
- # Add to the answer as the chatbot responds.
- answer = ""
- self.chat_history.append((self.question, answer))
- # Clear the question input.
- self.question = ""
- # Yield here to clear the frontend input before continuing.
- yield
- for item in session:
- if hasattr(item.choices[0].delta, "content"):
- answer += item.choices[0].delta.content
- self.chat_history[-1] = (self.chat_history[-1][0], answer)
- yield
|