Skip to main content

Documentation Index

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

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

State Management Function

You can use the following functions to manage conversation state in your application.

Get Conversation State

Gets the conversation state for a given conversation ID.
const state = await getConversationState<Schema>(conversationId);

Set Conversation State

Sets the conversation state for a given conversation ID. If the conversation state already exists, it will be overwritten.
await setConversationState<Schema>(conversationId, state);

Update Conversation State

Updates the conversation state for a given conversation ID. If the conversation state does not exist, it will throw an error.
await updateConversationState<Schema>(conversationId, state);

Create Conversation State

Creates a new conversation state for a given conversation ID. If the conversation state already exists, it will throw an error.
await createConversationState<Schema>(conversationId, state);

Usage

Here’s an example of a conversational assistant that remember’s the user’s previous messages:
import {
  Chat,
  // import conversation state management functions
  getConversationState,
  setConversationState,
} from "@palico-ai/app";

const handler: Chat = async ({
  conversationId,
  isNewConversation,
  userMessage,
}) => {
  let state: {
    messages: OpenAIMessage[];
  };
  // create or restore conversation state
  if (isNewConversation) {
    state = { messages: [] };
  } else {
    state = await getConversationState(conversationId);
  }

  // add user message to conversation state and call LLM
  state.messages.push({ role: "user", content: userMessage });
  const response = await openai.chat.completions.create({
    model: "gpt-3.5-turbo-0125",
    messages: state.messages,
  });
  const responseMessage = response.choices[0].message.content;
  // add agent message to conversation state
  state.messages.push({ role: "agent", content: responseMessage });

  // save conversation state
  await setConversationState(conversationId, state);
  return { message: responseMessage };
};