Planifiez les tâches d’un agent ou laissez-le planifier lui-même ses prochaines tâches.
Utilisez les automatisations planifiées pour lancer des sessions d’agent aux horaires définis par une expression cron. Vous pouvez aussi activer l’outil automations pour que vos agents puissent planifier des tâches au fil de leur travail.
Automatisez les sessions avec cron
Utilisez une expression cron et un fuseau horaire pour démarrer de nouvelles sessions ou poursuivre une session existante.
Permettez aux agents de créer des automatisations
Ajoutez l’outil automations pour qu’un agent puisse planifier des tâches de suivi dans sa session en cours.
Suivez les invocations des automatisations
Chaque invocation consigne une tentative d’envoi d’une tâche à une session. Consultez son statut et l’identifiant de la session.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16import OpenAI from"openai";constclient=newOpenAI();constsession=await client.beta.agents.sessions.create({ agent: { model: "gpt-6-astra", instructions:"Use automations to schedule tasks requested by the user. Delegate each scheduled task to a subagent and ask for a concise result. Keep the goal, schedule, and useful summaries in the main session. Adjust or stop schedules when the user asks.", tools: [{ type: "automations" }], multi_agent: { enabled: true }, }, environment: { type: "openai_hosted" }, input:"Every day at 10 AM in America/New_York, review the goals we discuss here and suggest the next actions I could take.",});console.log(session.id);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22from openai import OpenAIclient = OpenAI()session = client.beta.agents.sessions.create( agent={ "model": "gpt-6-astra", "instructions": ( "Use automations to schedule tasks requested by the user. " "Delegate each scheduled task to a subagent and ask for a concise result. " "Keep the goal, schedule, and useful summaries in the main session. " "Adjust or stop schedules when the user asks." ), "multi_agent": {"enabled": True}, "tools": [{"type": "automations"}], }, environment={"type": "openai_hosted"}, input=( "Every day at 10 AM in America/New_York, review the goals we discuss here " "and suggest the next actions I could take." ),)print(session.id)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32import ( "context" "fmt" "github.com/openai/openai-go/v3")ctx := context.Background()client := openai.NewClient()session, err := client.Beta.Agents.Sessions.New(ctx, openai.BetaAgentSessionNewParams{ Agent: openai.BetaAgentSessionNewParamsAgent{ Model: openai.String("gpt-6-astra"), Instructions: openai.String("Use automations to schedule tasks requested by the user. Delegate each scheduled task to a subagent and ask for a concise result. Keep the goal, schedule, and useful summaries in the main session. Adjust or stop schedules when the user asks."), MultiAgent: openai.MultiAgentConfigParam{ Enabled: true, }, Tools: []openai.AgentToolParamUnion{ {OfParamAutomations: &openai.AgentToolParamAutomations{}}, }, }, Environment: openai.EnvironmentParamUnion{ OfParamOpenAIHosted: &openai.EnvironmentParamOpenAIHosted{}, }, Input: openai.BetaAgentSessionNewParamsInputUnion{ OfString: openai.String("Every day at 10 AM in America/New_York, review the goals we discuss here and suggest the next actions I could take."), }, })if err != nil { panic(err)}fmt.Println(session.ID)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.models.beta.agents.EnvironmentParam;import com.openai.models.beta.agents.MultiAgentConfigParam;import com.openai.models.beta.agents.sessions.SessionCreateParams;OpenAIClient client = OpenAIOkHttpClient.fromEnv();var session = client .beta() .agents() .sessions() .create( SessionCreateParams.builder() .agent( SessionCreateParams.Agent.builder() .model("gpt-6-astra") .instructions( "Use automations to schedule tasks requested by the user. Delegate each scheduled task to a subagent and ask for a concise result. Keep the goal, schedule, and useful summaries in the main session. Adjust or stop schedules when the user asks.") .multiAgent(MultiAgentConfigParam.builder().enabled(true).build()) .addToolAutomations() .build()) .environment(EnvironmentParam.OpenAIHosted.builder().build()) .input( "Every day at 10 AM in America/New_York, review the goals we discuss here and suggest the next actions I could take.") .build());System.out.println(session.id());
1
2
3
4
5
6
7
8
9
10
11
12
13
14require "openai"client = OpenAI::Client.newsession = client.beta.agents.sessions.create( agent: { model: "gpt-6-astra", instructions: "Use automations to schedule tasks requested by the user. Delegate each scheduled task to a subagent and ask for a concise result. Keep the goal, schedule, and useful summaries in the main session. Adjust or stop schedules when the user asks.", multi_agent: { enabled: true }, tools: [{ type: "automations" }] }, environment: { type: "openai_hosted" }, input: "Every day at 10 AM in America/New_York, review the goals we discuss here and suggest the next actions I could take.")puts session.id
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16curl https://api.openai.com/v1/agents/sessions \ -H "OpenAI-Beta: agents=v1" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "agent": { "model": "gpt-6-astra", "instructions": "Use automations to schedule tasks requested by the user. Delegate each scheduled task to a subagent and ask for a concise result. Keep the goal, schedule, and useful summaries in the main session. Adjust or stop schedules when the user asks.", "tools": [{ "type": "automations" }], "multi_agent": { "enabled": true } }, "environment": { "type": "openai_hosted" }, "input": "Every day at 10 AM in America/New_York, review the goals we discuss here and suggest the next actions I could take." }'
Une automatisation est une planification enregistrée pour les tâches d’un agent. L’API Agents conserve cette planification et envoie chaque tâche à sa session cible.
Définissez la tâche. Choisissez quand l’exécuter et précisez si chaque exécution doit démarrer une nouvelle session ou poursuivre une session existante.
Envoyez la tâche. Chaque exécution crée une invocation, qui consigne la tentative d’envoi de la tâche à sa session cible. Si cette session est occupée, la tâche reste en attente.
Suivez l’exécution jusqu’au résultat. L’agent utilise les outils et le contexte de la session. Suivez les événements de session pour connaître l’avancement et récupérer les résultats. La réception de la tâche par la session ne signifie pas que l’agent a terminé son travail.
Votre application peut créer, modifier, suspendre ou supprimer des planifications via l’API. Si l’outil automations est activé, un agent peut également planifier sa prochaine vérification dans sa session en cours.
Choisissez la session et l’horaire
Choisissez la cible selon que la tâche nécessite ou non l’historique de la conversation.
Cible
Cas d’usage
Configuration requise
new_session
Tâche indépendante, par exemple un bilan mensuel des dépenses.
Un agent, un environnement et des messages initiaux dans target.input.
existing_session
Tâche de suivi qui s’appuie sur les résultats précédents de la session.
Un identifiant de session et le texte du rappel dans target.instructions.
Choisissez l’horaire indépendamment de la cible.
Type
Champs de planification
Exemple
periodic
expression et timezone
Tous les jours à 10 h dans le fuseau America/New_York.
once
run_at
Une seule vérification à une date future exprimée sous forme d’horodatage Unix en secondes.
Les deux types de planification acceptent l’une ou l’autre cible. Lorsque vous créez une automatisation, l’API l’enregistre avec le statut active sans exécuter immédiatement la tâche. La première exécution d’une automatisation périodique est prévue au prochain horaire correspondant à sa planification.
Planifiez des suggestions quotidiennes
Avant de créer l’automatisation, créez un agent et fournissez-lui les instructions et les outils nécessaires à la tâche, notamment l’accès à l’agenda, aux tâches et aux messages de l’utilisateur. Consultez la section Réutilisez un agent dans plusieurs sessions.
Les SDK incluent l’en-tête OpenAI-Beta: agents=v1. Ajoutez-le lorsque vous appelez l’API avec cURL.
Cet exemple crée une automatisation qui démarre une nouvelle session chaque jour à 10 h, heure de New York.
Planifiez des suggestions quotidiennes
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26import OpenAI from "openai";const client = new OpenAI();const automation = await client.beta.agents.automations.create({ type: "periodic", name: "Daily suggestions", expression: "0 10 * * *", timezone: "America/New_York", target: { type: "new_session", agent_id: "agt_123", environment: { type: "openai_hosted" }, input: [ { role: "user", content: [ { type: "input_text", text: "Review my calendar, tasks, and recent messages for today. Suggest the most useful actions I could take today, with a short reason for each.", }, ], }, ], },});console.log(automation);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30from openai import OpenAIclient = OpenAI()automation = client.beta.agents.automations.create(type="periodic",name="Daily suggestions",expression="0 10 * * *",timezone="America/New_York",target={"type": "new_session","agent_id": "agt_123","environment": {"type": "openai_hosted"},"input": [ {"role": "user","content": [ {"type": "input_text","text": ("Review my calendar, tasks, and recent messages for today. ""Suggest the most useful actions I could take today, ""with a short reason for each." ), } ], } ], },)print(automation.to_json())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42import ( "context" "fmt" "github.com/openai/openai-go/v3")ctx := context.Background()client := openai.NewClient()automation, err := client.Beta.Agents.Automations.New(ctx, openai.BetaAgentAutomationNewParams{ CreateAutomationParams: openai.AutomationScheduleParamUnion{ OfParamPeriodic: &openai.AutomationScheduleParamPeriodic{ Name: "Daily suggestions", Expression: "0 10 * * *", Timezone: "America/New_York", Target: openai.AutomationTargetParamUnion{ OfParamNewSession: &openai.AutomationTargetParamNewSession{ AgentID: openai.String("agt_123"), Environment: openai.EnvironmentParamUnion{ OfParamOpenAIHosted: &openai.EnvironmentParamOpenAIHosted{}, }, Input: []openai.AgentSessionInputMessageParam{ { Content: []openai.InputContentParamUnion{ { OfParamInputText: &openai.InputContentParamInputText{ Text: "Review my calendar, tasks, and recent messages for today. Suggest the most useful actions I could take today, with a short reason for each.", }, }, }, }, }, }, }, }, }, })if err != nil { panic(err)}fmt.Println(automation.ID)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.models.beta.agents.AgentSessionInputMessageParam;import com.openai.models.beta.agents.EnvironmentParam;import com.openai.models.beta.agents.automations.AutomationCreateParams;import com.openai.models.beta.agents.automations.AutomationScheduleParam;import com.openai.models.beta.agents.automations.AutomationTargetParam;OpenAIClient client = OpenAIOkHttpClient.fromEnv();var automation = client .beta() .agents() .automations() .create( AutomationCreateParams.builder() .automationScheduleParam( AutomationScheduleParam.Periodic.builder() .name("Daily suggestions") .expression("0 10 * * *") .timezone("America/New_York") .target( AutomationTargetParam.NewSession.builder() .agentId("agt_123") .environment(EnvironmentParam.OpenAIHosted.builder().build()) .addInput( AgentSessionInputMessageParam.builder() .addInputTextContent( "Review my calendar, tasks, and recent messages for today. Suggest the most useful actions I could take today, with a short reason for each.") .build()) .build()) .build()) .build());System.out.println(automation);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28require "openai"client = OpenAI::Client.newautomation = client.beta.agents.automations.create( create_automation_params: { type: "periodic", name: "Daily suggestions", expression: "0 10 * * *", timezone: "America/New_York", target: { type: "new_session", agent_id: "agt_123", environment: { type: "openai_hosted" }, input: [ { role: "user", content: [ { type: "input_text", text: "Review my calendar, tasks, and recent messages for today. Suggest the most useful actions I could take today, with a short reason for each." } ] } ] } })puts automation.id
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28curl https://api.openai.com/v1/agents/automations \ -H "OpenAI-Beta: agents=v1" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "periodic", "name": "Daily suggestions", "expression": "0 10 * * *", "timezone": "America/New_York", "target": { "type": "new_session", "agent_id": "agt_123", "environment": { "type": "openai_hosted" }, "input": [ { "role": "user", "content": [ { "type": "input_text", "text": "Review my calendar, tasks, and recent messages for today. Suggest the most useful actions I could take today, with a short reason for each." } ] } ] } }'
Conservez l’identifiant de l’automatisation renvoyé dans id pour consulter ou gérer la planification par la suite. Chaque invocation démarre une nouvelle conversation. La configuration d’environnement ci-dessus crée un bac à sable hébergé par OpenAI pour cette session.
Vous pouvez fournir directement la configuration de l’agent dans target.agent au lieu de référencer un agent enregistré avec target.agent_id. Renseignez un seul de ces deux champs. Placez les messages initiaux dans target.input et non au premier niveau de la requête. Incluez au moins un message contenant du texte non vide ou l’URL d’une image.
Analysez les dépenses chaque mois
La même méthode permet d’établir un bilan mensuel des dépenses. Donnez à l’agent enregistré accès aux données financières de l’utilisateur, puis planifiez une nouvelle session à 9 h le premier jour de chaque mois.
Planifiez un bilan mensuel des dépenses
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26import OpenAI from "openai";const client = new OpenAI();const automation = await client.beta.agents.automations.create({ type: "periodic", name: "Monthly spending review", expression: "0 9 1 * *", timezone: "America/New_York", target: { type: "new_session", agent_id: "agt_123", environment: { type: "openai_hosted" }, input: [ { role: "user", content: [ { type: "input_text", text: "Review my spending for the previous month. Flag unused subscriptions, price increases, and other potential savings for me to review.", }, ], }, ], },});console.log(automation);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30from openai import OpenAIclient = OpenAI()automation = client.beta.agents.automations.create(type="periodic",name="Monthly spending review",expression="0 9 1 * *",timezone="America/New_York",target={"type": "new_session","agent_id": "agt_123","environment": {"type": "openai_hosted"},"input": [ {"role": "user","content": [ {"type": "input_text","text": ("Review my spending for the previous month. Flag unused ""subscriptions, price increases, and other potential ""savings for me to review." ), } ], } ], },)print(automation.to_json())
Utilisez une expression cron à cinq champs et indiquez le nom du fuseau horaire.
Expression
Horaire
0 10 * * *
Tous les jours à 10 h
0 */2 * * *
Toutes les deux heures
0 9 1 * *
Le premier jour de chaque mois à 9 h
0 9 * * MON-FRI
Du lundi au vendredi à 9 h
Le fuseau horaire détermine comment interpréter l’expression. Utilisez UTC pour planifier en UTC ou un fuseau horaire IANA tel que America/New_York pour planifier en heure locale. N’incluez pas run_at dans une automatisation périodique.
Une planification cron suit les heures du fuseau sélectionné. Par exemple, 0 */3 * * * prévoit des exécutions à minuit, à 3 h, à 6 h, puis toutes les trois heures. L’intervalle ne se calcule pas à partir de l’heure de création.
La planification indique l’heure prévue. Pour répartir la charge, l’API Agents ajoute un léger délai aléatoire aux exécutions récurrentes. La tâche peut attendre plus longtemps si la session cible est occupée.
Poursuivez une session existante
Utilisez une session existante lorsque l’agent a besoin de résultats antérieurs, de messages précédents ou de travaux enregistrés. Par exemple, une session consacrée à l’organisation d’un dîner peut conserver les préférences de l’utilisateur en matière de restaurants et les résultats des vérifications de disponibilité précédentes.
Cet exemple vérifie toutes les deux heures, dans cette même session, si des tables sont disponibles à la réservation.
À chaque invocation, la même session reçoit les instructions enregistrées sous forme de notification d’automatisation. Elle utilise la configuration actuelle de son agent et son état enregistré. Cette notification est distincte d’un nouveau message de l’utilisateur.
Si la session est occupée, l’envoi est différé jusqu’à ce qu’elle soit disponible. Une exécution planifiée n’interrompt pas le tour en cours. Elle ne fournit ni le résultat d’outil ni l’approbation que la session attend. Votre application doit toujours traiter les actions requises.
Planifiez une vérification unique
Pour un suivi ponctuel, utilisez type: "once" avec run_at. La valeur doit être un horodatage Unix entier en secondes correspondant à une date future. N’incluez ni expression ni timezone.
Planifiez une vérification pour le 1er janvier 2027 à 9 h UTC.
Planifiez une exécution unique de l’agent
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import OpenAI from "openai";const client = new OpenAI();const automation = await client.beta.agents.automations.create({ type: "once", name: "Check restaurant reply", run_at: 1798794000, target: { type: "existing_session", session_id: "sess_123", instructions: "Check whether the restaurant replied about our booking. Summarize any changes to the dinner plans.", },});console.log(automation);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17from openai import OpenAIclient = OpenAI()automation = client.beta.agents.automations.create(type="once",name="Check restaurant reply",run_at=1798794000,target={"type": "existing_session","session_id": "sess_123","instructions": ("Check whether the restaurant replied about our booking. ""Summarize any changes to the dinner plans." ), },)print(automation.to_json())
Une fois l’exécution ponctuelle terminée, aucune autre exécution n’est prévue. Vous pouvez toujours déclencher l’automatisation manuellement ou créer une autre automatisation pour planifier un nouveau suivi.
Laissez l’agent planifier les tâches de suivi
Ajoutez automations aux outils de l’agent pour lui permettre de planifier les tâches demandées par l’utilisateur. Cet exemple active également les sous-agents afin que l’agent principal puisse déléguer chaque tâche planifiée et conserver un bref résumé du résultat.
Laissez les agents planifier des tâches
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16import OpenAI from "openai";const client = new OpenAI();const session = await client.beta.agents.sessions.create({ agent: { model: "gpt-6-astra", instructions: "Use automations to schedule tasks requested by the user. Delegate each scheduled task to a subagent and ask for a concise result. Keep the goal, schedule, and useful summaries in the main session. Adjust or stop schedules when the user asks.", tools: [{ type: "automations" }], multi_agent: { enabled: true }, }, environment: { type: "openai_hosted" }, input: "Every day at 10 AM in America/New_York, review the goals we discuss here and suggest the next actions I could take.",});console.log(session.id);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22from openai import OpenAIclient = OpenAI()session = client.beta.agents.sessions.create(agent={"model": "gpt-6-astra","instructions": ("Use automations to schedule tasks requested by the user. ""Delegate each scheduled task to a subagent and ask for a concise result. ""Keep the goal, schedule, and useful summaries in the main session. ""Adjust or stop schedules when the user asks." ),"multi_agent": {"enabled": True},"tools": [{"type": "automations"}], },environment={"type": "openai_hosted"},input=("Every day at 10 AM in America/New_York, review the goals we discuss here ""and suggest the next actions I could take." ),)print(session.id)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32import ( "context" "fmt" "github.com/openai/openai-go/v3")ctx := context.Background()client := openai.NewClient()session, err := client.Beta.Agents.Sessions.New(ctx, openai.BetaAgentSessionNewParams{ Agent: openai.BetaAgentSessionNewParamsAgent{ Model: openai.String("gpt-6-astra"), Instructions: openai.String("Use automations to schedule tasks requested by the user. Delegate each scheduled task to a subagent and ask for a concise result. Keep the goal, schedule, and useful summaries in the main session. Adjust or stop schedules when the user asks."), MultiAgent: openai.MultiAgentConfigParam{ Enabled: true, }, Tools: []openai.AgentToolParamUnion{ {OfParamAutomations: &openai.AgentToolParamAutomations{}}, }, }, Environment: openai.EnvironmentParamUnion{ OfParamOpenAIHosted: &openai.EnvironmentParamOpenAIHosted{}, }, Input: openai.BetaAgentSessionNewParamsInputUnion{ OfString: openai.String("Every day at 10 AM in America/New_York, review the goals we discuss here and suggest the next actions I could take."), }, })if err != nil { panic(err)}fmt.Println(session.ID)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.models.beta.agents.EnvironmentParam;import com.openai.models.beta.agents.MultiAgentConfigParam;import com.openai.models.beta.agents.sessions.SessionCreateParams;OpenAIClient client = OpenAIOkHttpClient.fromEnv();var session = client .beta() .agents() .sessions() .create( SessionCreateParams.builder() .agent( SessionCreateParams.Agent.builder() .model("gpt-6-astra") .instructions( "Use automations to schedule tasks requested by the user. Delegate each scheduled task to a subagent and ask for a concise result. Keep the goal, schedule, and useful summaries in the main session. Adjust or stop schedules when the user asks.") .multiAgent(MultiAgentConfigParam.builder().enabled(true).build()) .addToolAutomations() .build()) .environment(EnvironmentParam.OpenAIHosted.builder().build()) .input( "Every day at 10 AM in America/New_York, review the goals we discuss here and suggest the next actions I could take.") .build());System.out.println(session.id());
1
2
3
4
5
6
7
8
9
10
11
12
13
14require "openai"client = OpenAI::Client.newsession = client.beta.agents.sessions.create( agent: { model: "gpt-6-astra", instructions: "Use automations to schedule tasks requested by the user. Delegate each scheduled task to a subagent and ask for a concise result. Keep the goal, schedule, and useful summaries in the main session. Adjust or stop schedules when the user asks.", multi_agent: { enabled: true }, tools: [{ type: "automations" }] }, environment: { type: "openai_hosted" }, input: "Every day at 10 AM in America/New_York, review the goals we discuss here and suggest the next actions I could take.")puts session.id
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16curl https://api.openai.com/v1/agents/sessions \ -H "OpenAI-Beta: agents=v1" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "agent": { "model": "gpt-6-astra", "instructions": "Use automations to schedule tasks requested by the user. Delegate each scheduled task to a subagent and ask for a concise result. Keep the goal, schedule, and useful summaries in the main session. Adjust or stop schedules when the user asks.", "tools": [{ "type": "automations" }], "multi_agent": { "enabled": true } }, "environment": { "type": "openai_hosted" }, "input": "Every day at 10 AM in America/New_York, review the goals we discuss here and suggest the next actions I could take." }'
L’agent peut ainsi créer, lister, récupérer, modifier, suspendre, reprendre et supprimer ses propres automatisations. L’API Agents définit la session en cours comme cible. L’agent peut planifier des exécutions ponctuelles ou périodiques, mais il ne peut pas utiliser ces outils pour démarrer une nouvelle session ni pour gérer les automatisations d’une autre session.
Les outils ont uniquement accès aux automatisations créées par l’agent dans la session en cours. Votre application peut les gérer via l’API, au même titre que celles qu’elle a créées elle-même. L’API Agents enregistre le créateur dans created_by. N’envoyez pas ce champ dans une requête de création.
Par défaut, l’outil est absent de la configuration. Votre application peut planifier des tâches sans l’activer. Si vous retirez l’outil de la configuration d’un agent, les planifications enregistrées sont conservées. Suspendez-les ou supprimez-les via l’API si nécessaire.
Gardez les détails des tâches répétitives hors du contexte principal
Pour les objectifs qui s’inscrivent dans la durée, activez l’orchestration multi-agent avec agent.multi_agent.enabled: true. Demandez à l’agent principal de conserver l’objectif et la planification, de déléguer chaque tâche à un sous-agent et de garder un bref résumé du résultat. Les sorties détaillées des outils utilisés lors des vérifications successives restent ainsi hors de la fenêtre de contexte de la session principale.
Par exemple, ajoutez ce passage aux instructions de l’agent principal :
Déléguez chaque tâche planifiée à un sous-agent. Transmettez-lui l’objectif et les résultats antérieurs pertinents, puis demandez-lui un résultat concis. Examinez ce résultat, conservez-en les éléments utiles sous forme de résumé et décidez s’il faut maintenir, modifier ou arrêter la planification.
L’outil automations gère les planifications. Conservez les autres outils et les accès aux données dont l’agent a besoin pour exécuter les tâches planifiées.
Planifiez le suivi de la prise en main depuis votre application
Votre application peut aussi créer des planifications en réponse à ses propres événements. Par exemple, à l’inscription d’un utilisateur, démarrez une session de prise en main et planifiez un premier suivi 48 heures plus tard.
Planifiez un suivi de la prise en main
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import OpenAI from "openai";const client = new OpenAI();const automation = await client.beta.agents.automations.create({ type: "once", name: "Onboarding follow-up", run_at: Math.floor(Date.now() / 1000) + 48 * 60 * 60, target: { type: "existing_session", session_id: "sess_123", instructions: "Review onboarding progress and send the next onboarding message if the user has not completed onboarding.", },});console.log(automation);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19import timefrom openai import OpenAIclient = OpenAI()automation = client.beta.agents.automations.create(type="once",name="Onboarding follow-up",run_at=int(time.time()) +48*60*60,target={"type": "existing_session","session_id": "sess_123","instructions": ("Review onboarding progress and send the next onboarding message ""if the user has not completed onboarding." ), },)print(automation.to_json())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.models.beta.agents.automations.AutomationCreateParams;import com.openai.models.beta.agents.automations.AutomationScheduleParam;import com.openai.models.beta.agents.automations.AutomationTargetParam;import java.time.Duration;import java.time.Instant;OpenAIClient client = OpenAIOkHttpClient.fromEnv();var automation = client .beta() .agents() .automations() .create( AutomationCreateParams.builder() .automationScheduleParam( AutomationScheduleParam.Once.builder() .name("Onboarding follow-up") .runAt(Instant.now().plus(Duration.ofHours(48)).getEpochSecond()) .target( AutomationTargetParam.ExistingSession.builder() .sessionId("sess_123") .instructions( "Review onboarding progress and send the next onboarding message if the user has not completed onboarding.") .build()) .build()) .build());System.out.println(automation);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16require "openai"client = OpenAI::Client.newautomation = client.beta.agents.automations.create( create_automation_params: { type: "once", name: "Onboarding follow-up", run_at: Time.now.to_i + 48 * 60 * 60, target: { type: "existing_session", session_id: "sess_123", instructions: "Review onboarding progress and send the next onboarding message if the user has not completed onboarding." } })puts automation.id
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18RUN_AT=$(($(date +%s) + 48 * 60 * 60))curl https://api.openai.com/v1/agents/automations \ -H "OpenAI-Beta: agents=v1" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d @- <<EOF{ "type": "once", "name": "Onboarding follow-up", "run_at": $RUN_AT, "target": { "type": "existing_session", "session_id": "sess_123", "instructions": "Review onboarding progress and send the next onboarding message if the user has not completed onboarding." } }EOF
Après chaque suivi terminé, votre application peut en planifier un autre 48 heures plus tard. Arrêtez les suivis lorsque la prise en main est terminée ou que l’utilisateur y renonce, et supprimez tout suivi en attente. Utilisez des planifications ponctuelles pour respecter cet intervalle. Une expression cron fondée sur le jour du mois ne garantit pas un intervalle régulier de 48 heures lors du passage d’un mois au suivant.
L’agent chargé de la prise en main doit avoir accès à la progression de l’utilisateur et aux outils de messagerie de l’application. La création de l’automatisation planifie la tâche sans envoyer immédiatement le message.
Testez une exécution et vérifiez la réception de la tâche
Pour tester immédiatement une automatisation enregistrée, envoyez POST /v1/agents/automations/auto_123/invocations sans corps de requête. Une invocation manuelle ne modifie pas la planification enregistrée et ne consomme pas l’exécution prévue d’une automatisation ponctuelle. Elle fonctionne également lorsque la planification est suspendue.
Conservez l’identifiant d’invocation renvoyé. Récupérez l’invocation avec GET /v1/agents/automations/auto_123/invocations/ainv_123 ou consultez l’historique des envois avec GET /v1/agents/automations/auto_123/invocations.
Pour obtenir une vue d’ensemble des exécutions passées, listez les invocations de l’automatisation.
L’historique contient les invocations déjà créées, mais ne recense pas toutes les exécutions à venir. Vérifiez les champs suivants.
Champ
Points à vérifier
status
Vaut initialement queued, puis passe à completed lorsque l’envoi aboutit.
session_id
Identifie la session à suivre après l’envoi. Peut valoir null tant qu’aucune session n’est disponible.
source.type
Vaut manual pour une invocation manuelle ou automation pour une exécution planifiée.
scheduled_at
Indique l’heure prévue ou vaut null pour une invocation manuelle.
La réception de la tâche ne signifie pas que l’agent a terminé son travail. Pour une nouvelle session, elle indique que la session a accepté ses données d’entrée initiales. Pour une session existante, elle indique que la session a accepté la notification et la demande de démarrage de la tâche.
L’automatisation planifie la tâche. Votre application affiche les résultats de la session et envoie les éventuelles notifications à l’utilisateur.
Modifiez ou arrêtez une planification
Récupérez une automatisation avec GET /v1/agents/automations/auto_123. Listez les automatisations de votre projet avec GET /v1/agents/automations. Ajoutez session_id=sess_123 pour trouver celles qui ciblent une session existante.
Modifiez l’expression cron pour déplacer une vérification récurrente à 11 h.
Les champs omis conservent leur valeur. Si vous fournissez target, vous remplacez toute la cible. Incluez donc tous ses champs obligatoires et conservez son type. Modifiez le texte du rappel dans target.instructions ou les messages initiaux dans target.input. Une automatisation créée par un agent doit conserver comme cible la session dans laquelle l’agent l’a créée.
Apportez vos modifications avant la prochaine échéance prévue. Elles s’appliquent aux invocations futures. Une invocation déjà en file d’attente conserve la cible et les données d’entrée enregistrées lors de sa création.
Utilisez les opérations suivantes sans corps de requête.
Objectif
Opération
Effet
Suspendez les tâches planifiées.
POST /v1/agents/automations/auto_123/pause
Suspend les envois planifiés en attente. Les invocations manuelles restent possibles.
Reprenez les tâches planifiées.
POST /v1/agents/automations/auto_123/resume
Réactive la planification enregistrée.
Supprimez la planification.
DELETE /v1/agents/automations/auto_123
Empêche toute invocation ultérieure, planifiée ou manuelle.
Suspendre ou supprimer une automatisation n’arrête pas une tâche déjà acceptée par une session et ne supprime pas la session. Un envoi en cours peut encore atteindre sa session cible. Pour arrêter le travail en cours, annulez le tour actif.
Si l’heure prévue d’une automatisation ponctuelle passe pendant sa suspension, attribuez à run_at une nouvelle valeur dans le futur avant de reprendre l’automatisation. Une automatisation ponctuelle terminée ne peut être ni suspendue ni reprise. Créez une autre automatisation pour planifier un nouveau suivi.