Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.freeplay.ai/llms.txt

Use this file to discover all available pages before exploring further.

1. Configure Bedrock in Freeplay App

Configure Bedrock as a provider in your Freeplay account by going to Models -> Toggle on Bedrock -> Deploy a prompt with Bedrock

2. Import Anthropic Bedrock Client

Anthropic offers a specific Bedrock client in their SDK

3. Create a Bedrock Client

Instantiate your Bedrock client using the anthropic SDK

4. Fetch and Format Prompt

Retrieve a formatted prompt from freeplay

5. Call Bedrock Model

Call your Bedrock model

6. Record to Freeplay

Record the interaction back to freeplay

Examples

from freeplay import Freeplay, RecordPayload, CallInfo
from anthropic.lib.bedrock import AnthropicBedrock
from anthropic import NotGiven
import os
import time
from dotenv import load_dotenv

load_dotenv()
project_id = os.getenv("FREEPLAY_PROJECT_ID")
freeplay_key = os.getenv("FREEPLAY_API_KEY")
freeplay_url = os.getenv("FREEPLAY_URL")
aws_access_key_id = os.getenv("AWS_ACCESS_KEY_ID")
aws_secret_key = os.getenv("AWS_SECRET_KEY")

fpClient = Freeplay(
    api_base=freeplay_url,
    freeplay_api_key=freeplay_key
)

bedrockClient = AnthropicBedrock(
    aws_secret_key=aws_secret_key,
    aws_access_key=aws_access_key_id,
    aws_region="us-east-1"
)

# fetch the prompt
prompt_vars = {
    "pop_star": "Taylor Swift",
}
formatted_prompt = fpClient.prompts.get_formatted(
    project_id=project_id,
    template_name="album_bot",
    environment="latest",
    variables=prompt_vars
)

s = time.time()
response = bedrockClient.messages.create(
    model=formatted_prompt.prompt_info.model,
    system=formatted_prompt.system_content or NotGiven(),
    messages=formatted_prompt.llm_prompt,
    **formatted_prompt.prompt_info.model_parameters
)
e = time.time()

response_text = response.content[0].text

all_messages = formatted_prompt.all_messages(
    {"role": "assistant",
    "content": response_text}
)

session = fpClient.sessions.create()

payload = RecordPayload(
    project_id=project_id,
    all_messages=all_messages,
    inputs=prompt_vars,
    session_info=session,
    prompt_version_info=formatted_prompt.prompt_info,
    call_info=CallInfo.from_prompt_info(formatted_prompt.prompt_info, start_time=s, end_time=e)
)
fpClient.recordings.create(payload)