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
| Variable | Description |
|---|---|
ANTHROPIC_API_KEY | Anthropic API key |
Registry References
- prompt-example-workflow — Single-turn prompt with subject parameter and Handlebars template
Last updated on