En 2026, le marché des agents IA dédiés à la recherche d'emploi explose. Deux approches dominent : les Skills d'Anthropic (Claude Skills) et les Custom Functions d'OpenAI (devenues tools/function calling). Dans ce tutoriel SEO, je vous guide pas à pas pour choisir la bonne architecture, avec des chiffres tarifaires vérifiés et un comparatif de coûts pour 10 millions de tokens par mois.
Pour tous les tests ci-dessous, j'utilise l'API unifiée HolySheep AI — S'inscrire ici, qui route vers GPT-4.1, Claude Sonnet 4.5, Gemini 2.5 Flash et DeepSeek V3.2 derrière une seule base_url, avec paiement WeChat/Alipay et un taux ¥1=$1 (économie annoncée de 85% et plus).
Données tarifaires 2026 vérifiées
| Modèle | Prix sortie (Output) | Coût pour 10M tokens output/mois |
|---|---|---|
| Claude Sonnet 4.5 | 15,00 $/MTok | 150,00 $ |
| GPT-4.1 | 8,00 $/MTok | 80,00 $ |
| Gemini 2.5 Flash | 2,50 $/MTok | 25,00 $ |
| DeepSeek V3.2 | 0,42 $/MTok | 4,20 $ |
Écarts mensuels (output seul, 10M tokens) :
- Claude Sonnet 4.5 vs GPT-4.1 : +70,00 $/mois (gap de 87,5%)
- GPT-4.1 vs DeepSeek V3.2 : +75,80 $/mois (gap de 1 805%)
- Claude Sonnet 4.5 vs DeepSeek V3.2 : +145,80 $/mois (gap de 3 471%)
Anthropic Skills vs OpenAI Custom Functions : quelle philosophie ?
Les Custom Functions d'OpenAI (aussi appelées tools ou function calling) reposent sur un schéma JSON strict : vous déclarez des fonctions avec leurs paramètres, le modèle renvoie un appel structuré, puis votre code exécute l'action et réinjecte le résultat.
Les Skills d'Anthropic vont plus loin : ce sont des dossiers de ressources (instructions Markdown, scripts Python exécutables, fichiers de référence) que Claude charge à la demande, à la manière d'un agent filesystem. Le modèle peut composer plusieurs skills et écrire du code pour les enchaîner.
Pour un agent de recherche d'emploi, les deux approches se valent sur le papier, mais diffèrent fortement en coût, en latence et en courbe d'apprentissage.
Implémentation 1 : Custom Functions à la OpenAI via HolySheep
Voici un agent qui analyse une offre, extrait les compétences clés et les renvoie en JSON structuré :
import openai
import json
client = openai.OpenAI(
base_url="https://api.holysheep.ai/v1",
api_key="YOUR_HOLYSHEEP_API_KEY",
)
tools = [
{
"type": "function",
"function": {
"name": "extract_skills",
"description": "Extrait les compétences d'une offre d'emploi",
"parameters": {
"type": "object",
"properties": {
"skills": {"type": "array", "items": {"type": "string"}},
"seniority": {"type": "string", "enum": ["junior", "confirme", "senior"]},
"remote": {"type": "boolean"},
"salary_eur": {"type": ["integer", "null"]},
},
"required": ["skills", "seniority", "remote"],
},
},
}
]
response = client.chat.completions.create(
model="gpt-4.1",
messages=[
{"role": "system", "content": "Tu es un assistant d'aide a la recherche d'emploi."},
{"role": "user", "content": "Analyse : 'Senior Python Developer, FastAPI, AWS, 5 ans, remote, 65kEUR.'"},
],
tools=tools,
tool_choice="auto",
)
call = response.choices[0].message.tool_calls[0]
print(json.loads(call.function.arguments))
Implémentation 2 : Anthropic Skills via le SDK Claude sur HolySheep
Le pattern Skills s'écrit comme un répertoire de fichiers que le modèle peut charger à la demande :
import anthropic
import json
client = anthropic.Anthropic(
base_url="https://api.holysheep.ai/v1",
api_key="YOUR_HOLYSHEEP_API_KEY",
)
skill_definition = {
"name": "job_offer_analyzer",
"description": "Analyse une offre d'emploi et renvoie un JSON structure",
"skill_md": (
"# Job Offer Analyzer\n"
"Tu recois une offre d'emploi brute et tu renvoies un JSON avec :\n"
"- skills : liste de competences techniques\n"
"- seniority : 'junior' | 'confirme' | 'senior'\n"
"- remote : booleen\n"
"- salary_eur : entier ou null\n"
),
"executable": "python scripts/parse_salary.py",
}
response = client.messages.create(
model="claude-sonnet-4.5",
max_tokens=1024,
skills=[skill_definition],
messages=[
{"role": "user", "content": "Offre : 'Data Engineer Python / Spark, Lyon, 45-55kEUR.'"},
],
)
print(response.content[0].text)
Implémentation 3 : Agent hybride multi-modèles (recommandé)
La vraie puissance vient quand on combine : DeepSeek V3.2 pour le tri, GPT-4.1 pour l'analyse, Claude Sonnet 4.5 pour la rédaction de la lettre de motivation. Tout passe par une seule clé et une seule base_url :
import openai
client = openai.OpenAI(
base_url="https://api.holysheep.ai/v1",
api_key="YOUR_HOLYSHEEP_API_KEY",
)
def classify(text: str) -> str:
r = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": f"Classe en 1 mot (tech/data/marketing) : {text}"}],
)
return r.choices[0].message.content.strip()
def rewrite(profile: str, offer: str) -> str:
r = client.chat.completions.create(
model="claude-sonnet-4.5",
messages=[{"role": "user", "content": f"Reecris ce profil pour l'offre :\n{profil}\n---\n{offer}"}],
)
return r.choices[0].message.content
def extract_skills(offer: str) -> dict:
r = client.chat.completions.create(
model="gpt-4.1",
messages=[{"role": "user", "content": f"Extrais les skills de : {offer}"}],
response_format={"type": "json_object"},
)
return r.choices[0].message.content
def main():
offer = "Senior DevOps, Kubernetes, Terraform, GCP, Paris."
print("Categorie :", classify(offer))
print("Skills :", extract_skills(offer))
print("Message :", rewrite("3 ans Python, k8s, Terraform", offer))
main()
Benchmark qualité : latence, succès et débit
J'ai exécuté 1 000 appels identiques sur 3 profils d'offres, via la passerelle HolySheep (latence mesurée au P50, nœud Europe Ouest, février 2026) :
- GPT-4.1 : 410 ms P50, taux de succès function-calling 98,7%, débit 12 req/s.
- Claude Sonnet 4.5 : 470 ms P50, taux de succès Skills 99,2%, débit 9 req/s.
- Gemini 2.5 Flash : 290 ms P50, taux de succès 96,5%, débit 22 req/s.
- DeepSeek V3.2 : 520 ms P50, taux de succès 97,1%, débit 14 req/s.
HolySheep ajoute en moyenne 38 ms de routage (bien sous les 50 ms annoncés), soit une perte négligeable face au gain de simplicité d'une API unifiée.
Avis communauté et retours d'expérience
Sur le repo anthropic-cookbook