Reference
Client Wrapper
defineDatabaseChat configuration and methods.
defineDatabaseChat creates a DatabaseChatClient that wraps the component
endpoints with a consistent API.
import { defineDatabaseChat } from "./components/databaseChat/client";
const chat = defineDatabaseChat(components.databaseChat, {
model: "openai/gpt-4o",
systemPrompt: "You are a helpful assistant.",
toolGuidance: "auto",
tools,
maxMessagesForDisplay: 100,
maxMessagesForLLM: 50,
});Configuration options
model: default model forchat.send(default:openai/gpt-4o).systemPrompt: default prompt forchat.send.toolGuidance: standard tool-result guidance. Use"auto"or omit for generated guidance,"disabled"to opt out, or a custom string to append instead.tools: explicit tool definitions with already-created handler strings.autoTools: generate tools from schema-like definitions.maxMessagesForDisplay: default message limit forgetMessages(default: 100).maxMessagesForLLM: default message limit for LLM context (default: 50).
autoTools shape
autoTools: {
tables: TableInfo[];
handlers: {
query: string;
count: string;
aggregate?: string;
search?: string;
getById?: string;
};
allowedTables: string[];
excludeFields?: Record<string, string[]>;
tableDescriptions?: Record<string, string>;
fieldDescriptions?: Record<string, string>;
}Common methods
createConversation(ctx, { externalId, title? })getConversation(ctx, conversationId)listConversations(ctx, externalId)getMessages(ctx, conversationId)getStreamState(ctx, conversationId)getStreamDeltas(ctx, streamId, cursor)abortStream(ctx, conversationId, reason?)send(ctx, { conversationId, message, apiKey, model?, systemPrompt?, toolGuidance?, toolContext? })
Advanced methods
addMessage(ctx, conversationId, role, content, { toolCalls?, toolResults? })getMessagesForLLM(ctx, conversationId, { systemPrompt?, includeTools?, toolGuidance? })getTools()andgetToolsForLLM()getSystemPromptWithTools(basePrompt?, toolGuidance?)
Runtime function handles
Convex createFunctionHandle(...) is asynchronous and should be called inside
a Convex function. If your app builds tool handles at request time, call
components.databaseChat.chat.send directly and pass config.tools from that
action. Use defineDatabaseChat when your tool handler strings are already
available at construction time.