| |
|
|
| |
| import os |
| from openai import AsyncOpenAI |
| import chainlit as cl |
| from chainlit.prompt import Prompt, PromptMessage |
| from chainlit.playground.providers import ChatOpenAI |
| from dotenv import load_dotenv |
|
|
| load_dotenv() |
|
|
| |
| 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 |
| 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 |
| async def main(message: cl.Message): |
| settings = cl.user_session.get("settings") |
|
|
| client = AsyncOpenAI() |
|
|
| print(message.content) |
|
|
| 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.content), |
| ), |
| ], |
| inputs={"input": message.content}, |
| settings=settings, |
| ) |
|
|
| print([m.to_openai() for m in prompt.messages]) |
|
|
| msg = cl.Message(content="") |
|
|
| |
| async for stream_resp in await client.chat.completions.create( |
| messages=[m.to_openai() for m in prompt.messages], stream=True, **settings |
| ): |
| token = stream_resp.choices[0].delta.content |
| if not token: |
| token = "" |
| await msg.stream_token(token) |
|
|
| |
| prompt.completion = msg.content |
| msg.prompt = prompt |
|
|
| |
| await msg.send() |
|
|