Skip to main content
Version: 2026.2

OpenAI-Compatible Text Generation

This document covers the OpenAI-compatible text generation automation action step available in Pimcore Copilot.

Overview​

The OpenAI-compatible text generation step (generic_openai_compatible_text_generation) enables you to generate text content using any OpenAI-compatible API, including OpenAI, Azure OpenAI, Anthropic Claude, local models, and other providers that implement the OpenAI chat completions format.

The step supports dynamic prompt templating using Twig syntax and can save generated text to object fields or execution context.

Features​

Prompt Templating​

The text generation step supports Twig templating with access to the current subject:

prompt_template: |
Generate a product description for {{ subject.name }}.
Category: {{ subject.category }}
Price: {{ subject.price }}

Output Configuration​

Generated text can be saved to:

  • Subject fields: Save directly to the current object's field
  • Execution context: Store for use in subsequent automation steps
output_targets:
save_on_subject: true
save_on_execution_context: false

Configuration​

steps:
- step_implementation: 'generic_openai_compatible_text_generation'
name: 'Generate Content with OpenAI'
configuration:
endpoint: 'https://api.openai.com/v1/chat/completions'
api_key: 'sk-your-openai-api-key'
model: 'gpt-3.5-turbo'
prompt_template: |
Write engaging marketing copy for {{ subject.name }}.
Target audience: {{ subject.targetAudience }}
Tone: Professional and friendly
output_field: 'marketingCopy'
language: 'en'
output_targets:
save_on_subject: true
save_on_execution_context: false
parameters:
temperature: 0.7
max_tokens: 500
top_p: 1.0

Required Configuration​

  • endpoint: API endpoint URL
  • model: Model identifier
  • prompt_template: Twig template for the prompt
  • output_field: Field name to save the generated text

Optional Configuration​

  • api_key: API authentication key that may be needed to use the configured endpoint
  • language: Language code for localized fields
  • parameters: OpenAI API parameters
    • temperature: Randomness (0.0-2.0)
    • max_tokens: Maximum response length
    • top_p: Nucleus sampling parameter
    • frequency_penalty: Reduce repetition (-2.0 to 2.0)
    • presence_penalty: Encourage new topics (-2.0 to 2.0)
    • stop: Stop sequences (string or array)

Supported Providers​

The OpenAI-compatible step works with any provider that implements the OpenAI chat completions API format:

OpenAI​

endpoint: 'https://api.openai.com/v1/chat/completions'
model: 'gpt-4o' # or gpt-4, gpt-4-turbo, etc.

HuggingFace Inference Endpoints​

endpoint: 'https://router.huggingface.co/{inference_provider}/v1/chat/completions'
model: '<your_model>'

Error Handling​

The step includes comprehensive error handling:

  • API errors: Logged with response details
  • Empty responses: Detected and logged
  • Template errors: Twig syntax errors are caught
  • Field validation: Output field availability is verified

Error messages are logged to the job run with context including:

  • Subject path
  • Error details
  • Generated text length (on success)

Best Practices​

Prompt Design​

  • Be specific and clear in your prompts
  • Include relevant context from the subject
  • Use consistent formatting
  • Test prompts with sample data

Model Selection​

  • OpenAI-compatible: Balance cost, speed, and quality
  • Local models: Consider latency and resource requirements

Performance​

  • Batch similar requests when possible
  • Monitor API rate limits and costs

Security​

  • Store API keys as environment variables
  • Use least-privilege API keys
  • Monitor API usage for unexpected spikes

Troubleshooting​

Common Issues​

  1. Empty responses: Check model endpoint and API key
  2. Rate limiting: Implement delays or use different models
  3. Template errors: Validate Twig syntax and subject field access
  4. Field not found: Ensure output field exists in object class definition

Debug Tips​

  • Check job run logs for detailed error messages
  • Test API endpoints manually with curl
  • Verify environment variable resolution
  • Use simple prompts first, then add complexity