A ChatGeneration contains all of the data that has been sent to a message-based LLM (like GPT-4) as well as the response from the LLM. It is designed to be passed to a Step to enable the Prompt Playground.

Attributes

completion
str

The completion of the prompt.

inputs
Dict[str, str]

The inputs (variables) to the prompt, represented as a dictionary.

messages
List[GenerationMessage]

The list of messages that form the prompt if in chat mode.

provider
str

The provider of the LLM, such as “openai-chat”.

settings
Dict[str, Any]

The settings the LLM provider was called with. Can include OpenAI tools and functions.

Example

import os

from chainlit.playground.providers import ChatOpenAI
import chainlit as cl

# If no OPENAI_API_KEY is available, the ChatOpenAI provider won't be available in the prompt playground
os.environ["OPENAI_API_KEY"] = "sk-..."

template = """Hello, this is a template.
This is a variable1 {variable1}
And this is variable2 {variable2}
"""

inputs = {
    "variable1": "variable1 value",
    "variable2": "variable2 value",
}

settings = {
    "model": "gpt-3.5-turbo",
    "temperature": 0,
    # ... more settings
}


@cl.step(type="llm")
async def fake_llm():
    # Pretend we're calling the LLM
    await cl.sleep(2)

    fake_completion = "The openai completion"

    formatted_template = template.format(**inputs)

    # Add the generation to the current step
    cl.context.current_step.generation = cl.ChatGeneration(
        provider=ChatOpenAI.id,
        completion=fake_completion,
        inputs=inputs,
        settings=settings,
        messages=[
            cl.GenerationMessage(
                template=template, formatted=formatted_template, role="system"
            ),
        ],
    )

    return fake_completion


@cl.on_chat_start
async def start():
    await fake_llm()

A chat completion displayed in the Prompt Playground