All guides
Intermediate-AdvancedSelf-pacedFree GuideSection 25/33

OpenAI API et prompt engineering

Learn to build and check a web application with development tools and AI assistants. Practise design, coding and validation.

The full lessons for this course are currently available in French. Use the section menu to navigate the French course.

💡

Free content, available without an account. Tools and models change: use the current model guide to check their versions. Models and sources

Section 13.6.1 : OpenAI API et prompt engineering

🎯 Objectif pédagogique

Intégrer l'API OpenAI dans une application Rails, comprendre les modèles GPT, maîtriser le prompt engineering et construire des fonctionnalités IA concrètes.


L'API OpenAI

L'API OpenAI donne accès aux modèles GPT-4, GPT-3.5 et aux embeddings. C'est l'interface programmatique qui permet à vos applications d'utiliser l'intelligence artificielle.

# Gemfile
gem 'ruby-openai'
# config/initializers/openai.rb
OpenAI.configure do |config|
  config.access_token = ENV.fetch('OPENAI_API_KEY')
  config.organization_id = ENV.fetch('OPENAI_ORG_ID', nil)
end

OPENAI_CLIENT = OpenAI::Client.new

Premier appel API

# app/services/ai_service.rb

class AiService
  def self.chat(prompt, system_message: nil)
    messages = []
    messages << { role: 'system', content: system_message } if system_message
    messages << { role: 'user', content: prompt }

    response = OPENAI_CLIENT.chat(
      parameters: {
        model: 'gpt-4',
        messages: messages,
        temperature: 0.7,
        max_tokens: 1000
      }
    )

    response.dig('choices', 0, 'message', 'content')
  end
end

# Utilisation
result = AiService.chat(
  'Résume cet article en 3 points clés',
  system_message: 'Tu es un assistant de rédaction concis et précis.'
)

Prompt Engineering : l'art du prompt

Le prompt engineering est la compétence de formuler des instructions claires pour obtenir le résultat désiré des LLMs.

# MAUVAIS prompt
AiService.chat('Écris quelque chose sur le marketing')

# BON prompt - structuré
AiService.chat(
  'Rédige 5 titres d email marketing pour une vente flash de 48h ' \
  'sur des chaussures de running. ' \
  'Cible : hommes 25-40 ans, sportifs occasionnels. ' \
  'Ton : urgent mais pas agressif. ' \
  'Format : un titre par ligne, max 60 caractères.',
  system_message: 'Tu es un expert en copywriting email avec 10 ans ' \
    'd expérience en e-commerce sportif.'
)

Les techniques de prompt engineering

# 1. Few-shot prompting (exemples)
prompt = <<~PROMPT
  Classifie le sentiment de ces avis client.

  Exemples :
  "Livraison rapide, produit top !" => POSITIF
  "Trois semaines d attente, inadmissible" => NÉGATIF
  "Le produit est correct, rien de spécial" => NEUTRE

  Classifie :
  "#{avis_client}"
PROMPT

# 2. Chain-of-thought (raisonnement étape par étape)
prompt = <<~PROMPT
  Analyse ce business plan étape par étape :
  1. Identifie le marché cible
  2. Évalue la proposition de valeur
  3. Analyse le modèle de revenus
  4. Identifie les risques
  5. Donne une note de 1 à 10

  Business plan : #{business_plan}

  Raisonne à voix haute avant de donner ta note finale.
PROMPT

# 3. Structured output (JSON)
prompt = <<~PROMPT
  Extrais les informations de cette facture.
  Retourne UNIQUEMENT un JSON valide avec cette structure :
  {
    "numero_facture": "string",
    "date": "YYYY-MM-DD",
    "montant_total": number,
    "lignes": [{"description": "string", "montant": number}]
  }

  Facture : #{texte_facture}
PROMPT

result = AiService.chat(prompt)
data = JSON.parse(result)

Intégrer l'IA dans un Controller Rails

# app/controllers/ai_summaries_controller.rb

class AiSummariesController < ApplicationController
  def create
    @article = Article.find(params[:article_id])
    authorize @article

    summary = AiService.chat(
      "Résume cet article en 3 bullet points de max 20 mots chacun :\n\n#{@article.content}",
      system_message: 'Tu es un assistant de synthèse. Sois concis et précis.'
    )

    @article.update(ai_summary: summary)

    redirect_to @article, notice: 'Résumé IA généré !'
  end
end
Quick Check

Quelle est la différence entre temperature 0 et temperature 1 dans l'API OpenAI ?

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

Your progress

Progress is self-reported and stored in your browser. The final completion record is not a qualification or an independent assessment.

View progress and completion record

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

One practical AI workflow in your inbox

Methods, resources and new exercises. Free, unsubscribe at any time.