Skip to Content
DocumentationFeaturesAI Text Generation

AI Text Generation

Use LlmGenerateTextTool from @loopstack/llm-provider-module to call the Claude LLM for text generation.

Setup

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

Example Workflow

import { z } from 'zod'; import { LlmGenerateTextTool, LlmGenerateTextResult, LlmMessageDocument } from '@loopstack/llm-provider-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({ provider: 'claude', model: 'claude-sonnet-4-6' }) llmGenerateText: LlmGenerateTextTool; llmResult?: LlmGenerateTextResult; @Initial({ to: 'prompt_executed' }) async prompt() { const args = this.ctx.run.args as { subject: string }; const result = await this.llmGenerateText.call({ model: 'claude-sonnet-4-6' }, prompt: this.render(__dirname + '/templates/prompt.md', { subject: args.subject }), }); this.llmResult = result.data as LlmGenerateTextResult; } @Final({ from: 'prompt_executed' }) async respond() { await this.repository.save(LlmMessageDocument, this.llmResult!.message, { meta: { response: this.llmResult!.response, provider: 'claude' }, }); } }

Call Options

await this.llmGenerateText.call({ 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.llmGenerateText.call({ model: 'claude-sonnet-4-6' }, prompt: rendered, });

Environment Variables

VariableDescription
ANTHROPIC_API_KEYAnthropic API key

Registry References

Last updated on