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

Attributes

model
str

The LLM model used.

prompt
str

The LLM prompt.

completion
str

The completion of the prompt.

variables
Dict[str, str]

The variables of the prompt, represented as a dictionary.

provider
str

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

tools
List[Dict]

The list of tools that can be used by the LLM.

settings
Dict[str, Any]

The settings the LLM provider was called with.

error
str

The error returned by the LLM.

tags
str

The tags you want to assign to this generation.

input_token_count
int

Total tokens sent to the LLM.

output_token_count
int

Total tokens returned by the LLM

token_count
int

Total tokens used by the LLM.

tt_first_token
float

Time from the request to receiving the first token.

token_throughput_in_s
float

LLM speed of token generation, in tokens per second.

duration
float

Total duration of the LLM request.

Example

import os

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

# If no OPENAI_API_KEY is available, the OpenAI 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}
"""

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

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

# Let's pretend we made the call to openai and this is the response
completion = "The openai completion"

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

    fake_completion = "The openai completion"

    prompt = template.format(**variables)

    # Add the generation to the current step
    cl.context.current_step.generation = cl.CompletionGeneration(
        model=settings["model"],
        provider=OpenAI.id,
        completion=fake_completion,
        variables=variables,
        settings=settings,
        prompt=prompt,
    )

    return fake_completion


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

A completion generation displayed in the Prompt Playground