Chameleon

Text Generation

AI text generation with multiple providers

Text Generation

Learn how to use AI text generation features with multiple providers including OpenAI, DeepSeek, and other AI services.

Overview

The text generation system supports multiple AI providers for generating high-quality text content. Users can choose from different models and providers based on their needs, with credit-based pricing and usage tracking. The system handles API key management through the Admin System and provides consistent interfaces across all providers.

Supported Providers

OpenAI

  • Models: GPT-3.5-turbo, GPT-4, GPT-4-turbo
  • Features: High-quality text generation, conversation, completion
  • Cost: 1-5 credits per request (varies by model)

DeepSeek

  • Models: DeepSeek-Chat, DeepSeek-Coder
  • Features: Code generation, technical writing, analysis
  • Cost: 1-3 credits per request

Other Providers

  • OpenRouter: Access to multiple models through unified API
  • SiliconFlow: Chinese-optimized models
  • Custom: Support for additional providers via configuration

API Endpoint

Text Generation API

// POST /api/demo/gen-text
interface TextGenerationRequest {
  prompt: string;
  provider: "openai" | "deepseek" | "openrouter" | "siliconflow";
  model?: string;
  max_tokens?: number;
  temperature?: number;
  stream?: boolean;
}

interface TextGenerationResponse {
  success: boolean;
  data?: {
    text: string;
    usage: {
      prompt_tokens: number;
      completion_tokens: number;
      total_tokens: number;
    };
    provider: string;
    model: string;
  };
  error?: string;
}

Usage Example

// Client-side text generation
const generateText = async (prompt: string, provider: string) => {
  const response = await fetch("/api/demo/gen-text", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      prompt,
      provider,
      max_tokens: 1000,
      temperature: 0.7,
    }),
  });

  const result = await response.json();
  
  if (result.success) {
    console.log("Generated text:", result.data.text);
    console.log("Token usage:", result.data.usage);
  } else {
    console.error("Generation failed:", result.error);
  }
};

Provider Configuration

Admin System Setup

  1. Go to /admin/ai-config
  2. Add API keys for desired providers
  3. Configure model settings and pricing
  4. Test provider connections

Environment Variables (Fallback)

# .env.local (fallback only - use Admin System)
OPENAI_API_KEY="sk-..."
DEEPSEEK_API_KEY="sk-..."
OPENROUTER_API_KEY="sk-..."
SILICONFLOW_API_KEY="sk-..."

Usage Examples

Basic Text Generation

// Generate creative writing
const creativePrompt = "Write a short story about a robot learning to paint";
const result = await generateText(creativePrompt, "openai");

// Generate technical documentation
const techPrompt = "Explain how React hooks work in simple terms";
const techResult = await generateText(techPrompt, "deepseek");

Code Generation

// Generate code with DeepSeek
const codePrompt = "Create a React component for a todo list";
const codeResult = await generateText(codePrompt, "deepseek");

Multi-Provider Comparison

// Compare outputs from different providers
const prompt = "Explain quantum computing";
const providers = ["openai", "deepseek", "openrouter"];

const results = await Promise.all(
  providers.map(provider => generateText(prompt, provider))
);

results.forEach((result, index) => {
  console.log(`${providers[index]}:`, result.data.text);
});

Credit System Integration

Credit Deduction

// Credits are deducted based on usage
const CREDIT_COSTS = {
  openai: {
    "gpt-3.5-turbo": 1,
    "gpt-4": 3,
    "gpt-4-turbo": 5,
  },
  deepseek: {
    "deepseek-chat": 1,
    "deepseek-coder": 2,
  },
};

Usage Tracking

// Track user usage and credits
const trackUsage = async (userId: string, provider: string, tokens: number) => {
  const cost = calculateCreditCost(provider, tokens);
  
  // Deduct credits
  await deductCredits(userId, cost);
  
  // Log usage
  await logUsage(userId, provider, tokens, cost);
};

File Locations

  • src/app/api/demo/gen-text/route.ts - Text generation API endpoint
  • src/services/ai-config.ts - AI provider configuration
  • src/services/text-generation.ts - Text generation business logic
  • src/models/ai-usage.ts - Usage tracking model
  • src/app/[locale]/(console)/ai-generator/page.tsx - User interface

Common Tasks

Generate Text for Blog Post

const blogPrompt = `
Write a comprehensive blog post about:
- Topic: ${topic}
- Length: 1000 words
- Style: Professional but engaging
- Include: Introduction, main points, conclusion
`;

const blogContent = await generateText(blogPrompt, "openai");

Create Product Descriptions

const productPrompt = `
Create a compelling product description for:
- Product: ${productName}
- Features: ${features}
- Target audience: ${audience}
- Tone: ${tone}
`;

const description = await generateText(productPrompt, "openai");

Generate Code Comments

const codePrompt = `
Add detailed comments to this code:
${code}

Explain:
- What each function does
- How the algorithm works
- Any important considerations
`;

const commentedCode = await generateText(codePrompt, "deepseek");

Troubleshooting

Provider not responding

Problem: API returns "Provider not available"

Solution:

  1. Check API key is configured in Admin System
  2. Verify provider is enabled
  3. Check API key validity
  4. Test with different provider

Insufficient credits

Problem: Generation fails with "Insufficient credits"

Solution:

  1. Check credit balance in /my-credits
  2. Purchase more credits at /pricing
  3. Use daily check-in for free credits
  4. Consider referral program

Poor quality output

Problem: Generated text is not useful

Solution:

  1. Improve prompt clarity and specificity
  2. Adjust temperature parameter (0.1-0.9)
  3. Try different providers
  4. Use more detailed instructions

Next Steps