Skip to Content
DocumentationFeaturesAI Text Generation

AI Text Generation

Use ClaudeGenerateText from @loopstack/claude-module to call the Claude LLM for text generation.

Setup

import { Module } from '@nestjs/common'; import { ClaudeModule } from '@loopstack/claude-module'; import { LoopCoreModule } from '@loopstack/core'; @Module({ imports: [LoopCoreModule, ClaudeModule], providers: [PromptWorkflow], exports: [PromptWorkflow], }) export class PromptModule {}

Example Workflow

import { z } from 'zod'; import { ClaudeGenerateText, ClaudeGenerateTextResult, ClaudeMessageDocument } from '@loopstack/claude-module'; import { BaseWorkflow, Final, Initial, InjectTool, Workflow } from '@loopstack/common'; @Workflow({ uiConfig: __dirname + '/prompt.ui.yaml', schema: z.object({ subject: z.string().default('coffee'), }), }) export class PromptWorkflow extends BaseWorkflow { @InjectTool() claudeGenerateText: ClaudeGenerateText; llmResult?: ClaudeGenerateTextResult; @Initial({ to: 'prompt_executed' }) async prompt() { const args = this.ctx.args as { subject: string }; const result = await this.claudeGenerateText.call({ claude: { model: 'claude-sonnet-4-6' }, prompt: this.render(__dirname + '/templates/prompt.md', { subject: args.subject }), }); this.llmResult = result.data as ClaudeGenerateTextResult; } @Final({ from: 'prompt_executed' }) async respond() { await this.repository.save(ClaudeMessageDocument, this.llmResult!, { id: this.llmResult!.id }); } }

Call Options

await this.claudeGenerateText.call({ claude: { model: 'claude-sonnet-4-6' }, // Option 1: Simple prompt prompt: 'Write a haiku about coffee', // Option 2: Explicit messages messages: [ { role: 'system', content: 'You are a helpful assistant.' }, { role: 'user', content: 'Write a haiku about coffee' }, ], // Option 3: Collect documents by tag as conversation history messagesSearchTag: 'message', });

Using Templates

Render Handlebars templates for complex prompts:

const rendered = this.render(__dirname + '/templates/prompt.md', { subject: args.subject, }); const result = await this.claudeGenerateText.call({ claude: { model: 'claude-sonnet-4-6' }, prompt: rendered, });

Environment Variables

VariableDescription
ANTHROPIC_API_KEYAnthropic API key

Registry References

Last updated on