File size: 2,307 Bytes
2f6ea1f 00ed004 7540eba 4828f02 2f6ea1f 88f663f 1cad8ba 7540eba 1cad8ba 88f663f 2f6ea1f 6b68216 6724098 056a8db e325e6c 056a8db 2f6ea1f bddc163 6b68216 2f6ea1f 749b6b4 bddc163 88f663f 1cad8ba 88f663f 1cad8ba 88f663f bddc163 88f663f 2f6ea1f 88f663f 2f6ea1f 88f663f 2f6ea1f 88f663f 2f6ea1f 88f663f 2f6ea1f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# You can find this code for Chainlit python streaming here (https://docs.chainlit.io/concepts/streaming/python)
# OpenAI Chat completion
import openai #importing openai for API usage
import chainlit as cl #importing chainlit for our app
from chainlit.input_widget import Select, Switch, Slider #importing chainlit settings selection tools
from chainlit.prompt import Prompt, PromptMessage #importing prompt tools
from chainlit.playground.providers import ChatOpenAI #importing ChatOpenAI tools
# You only need the api key inserted here if it's not in your .env file
#openai.api_key = "YOUR_API_KEY"
# ChatOpenAI Templates
system_template = """You are a helpful assistant who always speaks in a pleasant tone!
"""
user_template = """{input}
Think through your response step by step.
"""
@cl.on_chat_start # marks a function that will be executed at the start of a user session
async def start_chat():
settings = {
"model": "gpt-3.5-turbo",
"temperature": 0,
"max_tokens": 500,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0,
}
cl.user_session.set("settings", settings)
@cl.on_message # marks a function that should be run each time the chatbot receives a message from a user
async def main(message: str):
settings = cl.user_session.get("settings")
prompt = Prompt(
provider=ChatOpenAI.id,
messages=[
PromptMessage(
role="system",
template=system_template,
formatted=system_template,
),
PromptMessage(
role="user",
template=user_template,
formatted=user_template.format(input=message),
)
],
inputs = {"input" : message},
settings=settings
)
msg = cl.Message(content="")
# Call OpenAI
async for stream_resp in await openai.ChatCompletion.acreate(
messages=[m.to_openai() for m in prompt.messages], stream=True, **settings
):
token = stream_resp.choices[0]["delta"].get("content", "")
await msg.stream_token(token)
# Update the prompt object with the completion
prompt.completion = msg.content
msg.prompt = prompt
# Send and close the message stream
await msg.send()
|