- Vue d'ensemble (Overview)
- Commencer avec les agents UiPath
- Premiers pas avec les agents UiPath utilisant LangGraph
- Créer un agent low-code dans Studio Web
- Ajouter des outils à votre agent UiPath
Définissez le contrat de l'agent, rédigez l'invite système et configurez les schémas d'entrée et de sortie dans agent.json.
Une fois la CLI installée et votre compte UiPath connecté, vous êtes prêt à élaborer l’agent.
Étape 4 - Élaborer la solution et l’agent
Les agents low-code résident dans une solution, l'unité déployable que la CLI télécharge vers Studio Web. Vous créez d'abord la solution, puis élaborez l'agent à l'intérieur.
-
Créez un répertoire de travail et élaborationz la solution:
mkdir Monster-Selector-Lab cd Monster-Selector-Lab uip solution init MonsterSelectormkdir Monster-Selector-Lab cd Monster-Selector-Lab uip solution init MonsterSelectorCela crée un répertoire
MonsterSelector/contenantMonsterSelector.uipx(le manifeste de la solution), plusAGENTS.mdetCLAUDE.mdfichiers d’information qui orientent les agents de codage vers la structure de la solution. -
Élaborez le projet d’agent dans le répertoire de la solution:
uip agent init MonsterSelector/MonsterSelectoruip agent init MonsterSelector/MonsterSelectoruip agent init <path>crée le projet d'agent au chemin donné et l'enregistre automatiquement avec la solution. Il génèreagent.json(l'invite système, les schémas et les paramètres du modèle),entry-points.json, un élaborationevals/vide et un ID de projet généré automatiquement. -
Déplacez-vous dans le répertoire de la solution pour les étapes restantes:
cd MonsterSelectorcd MonsterSelector
Deux répertoires nommés Monitor. Votre répertoire lab contient désormais MonsterSelector/ (la solution) qui contient à son tour un autre MonsterSelector/ (le projet d’agent). C'est normal: la solution et le projet d'agent peuvent partager un nom. Pendant que vous suivez les étapes suivantes, faites attention au répertoire dans lequel vous vous trouvez. L'étape 4 se termine par vous dans le répertoire de la solution (Monster-Selector-Lab/MonsterSelector/).
Étape 5 - Configurer l'agent
La configuration de l’agent est définie par les fichiers agent.json et entry-points.json . Vous les modifiez directement pour mettre en œuvre la conception depuis le début de ce lab, en remplaçant le contenu de l'espace réservé généré par l'élaboration.
Configurer agent.json
Pour remplacer l'élaboration, ouvrez MonsterSelector/agent.json (par rapport au répertoire de solution dans lequel vous vous trouvez). Remplacez l’intégralité de son contenu par les éléments suivants. La seule exception est la valeur projectId de la dernière ligne; conservez l'UUID généré par votre élaboration plutôt que d'utiliser l'espace réservé indiqué ici.
Le fichier JSON ci-dessous implémente la conception de ce que vous construisez:
- Schéma d’entrée:
questDescriptionetmonsters, tous deux requis. - Schéma de sortie:
monsterIndex. - Requête système: le texte d'instruction dans
messages[0](le rôlesystem) qui indique au modèle comment raisonner. - Rotation de l’utilisateur: le message dans
messages[1](le rôleuser) qui transportequestDescriptionetmonstersdans l’invite au moment de l’exécution: il s’agit du tour de la conversation LLM, et non d’un utilisateur final humain.
{
"version": "1.1.0",
"settings": {
"model": "gpt-4.1-2025-04-14",
"maxTokens": 16384,
"temperature": 0,
"engine": "basic-v2",
"maxIterations": 25,
"mode": "standard"
},
"inputSchema": {
"type": "object",
"properties": {
"questDescription": {
"type": "string",
"description": "Description of the quest"
},
"monsters": {
"type": "array",
"description": "Candidate monsters from the D&D 5e API"
}
},
"required": ["questDescription", "monsters"]
},
"outputSchema": {
"type": "object",
"properties": {
"monsterIndex": {
"type": "string",
"description": "The index slug of the chosen monster"
}
}
},
"metadata": {
"storageVersion": "50.0.0",
"isConversational": false,
"showProjectCreationExperience": false,
"targetRuntime": "pythonAgent"
},
"type": "lowCode",
"messages": [
{
"role": "system",
"content": "You are an RPG game master helping to select the most thematically appropriate monster for a quest. Given a quest description and a list of candidate monsters (each with a name and an index slug), pick the ONE monster whose lore, environment, or threat level best fits the quest. Return ONLY the index slug of your chosen monster. Do not return the full object or any commentary - just the string slug. If multiple candidates fit, favor the most iconic or thematically resonant choice.",
"contentTokens": [
{
"type": "simpleText",
"rawString": "You are an RPG game master helping to select the most thematically appropriate monster for a quest. Given a quest description and a list of candidate monsters (each with a name and an index slug), pick the ONE monster whose lore, environment, or threat level best fits the quest. Return ONLY the index slug of your chosen monster. Do not return the full object or any commentary - just the string slug. If multiple candidates fit, favor the most iconic or thematically resonant choice."
}
]
},
{
"role": "user",
"content": "{{input.questDescription}} {{input.monsters}}",
"contentTokens": [
{ "type": "variable", "rawString": "input.questDescription" },
{ "type": "simpleText", "rawString": " " },
{ "type": "variable", "rawString": "input.monsters" }
]
}
],
"projectId": "your-scaffold-generated-uuid-here"
}
{
"version": "1.1.0",
"settings": {
"model": "gpt-4.1-2025-04-14",
"maxTokens": 16384,
"temperature": 0,
"engine": "basic-v2",
"maxIterations": 25,
"mode": "standard"
},
"inputSchema": {
"type": "object",
"properties": {
"questDescription": {
"type": "string",
"description": "Description of the quest"
},
"monsters": {
"type": "array",
"description": "Candidate monsters from the D&D 5e API"
}
},
"required": ["questDescription", "monsters"]
},
"outputSchema": {
"type": "object",
"properties": {
"monsterIndex": {
"type": "string",
"description": "The index slug of the chosen monster"
}
}
},
"metadata": {
"storageVersion": "50.0.0",
"isConversational": false,
"showProjectCreationExperience": false,
"targetRuntime": "pythonAgent"
},
"type": "lowCode",
"messages": [
{
"role": "system",
"content": "You are an RPG game master helping to select the most thematically appropriate monster for a quest. Given a quest description and a list of candidate monsters (each with a name and an index slug), pick the ONE monster whose lore, environment, or threat level best fits the quest. Return ONLY the index slug of your chosen monster. Do not return the full object or any commentary - just the string slug. If multiple candidates fit, favor the most iconic or thematically resonant choice.",
"contentTokens": [
{
"type": "simpleText",
"rawString": "You are an RPG game master helping to select the most thematically appropriate monster for a quest. Given a quest description and a list of candidate monsters (each with a name and an index slug), pick the ONE monster whose lore, environment, or threat level best fits the quest. Return ONLY the index slug of your chosen monster. Do not return the full object or any commentary - just the string slug. If multiple candidates fit, favor the most iconic or thematically resonant choice."
}
]
},
{
"role": "user",
"content": "{{input.questDescription}} {{input.monsters}}",
"contentTokens": [
{ "type": "variable", "rawString": "input.questDescription" },
{ "type": "simpleText", "rawString": " " },
{ "type": "variable", "rawString": "input.monsters" }
]
}
],
"projectId": "your-scaffold-generated-uuid-here"
}
temperature: 0. réduit la variance de sortie, mais ne rend pas le modèle entièrement déterministe. Même à 0, le modèle peut parfois renvoyer des sorties valides différentes entre les exécutions. Pour cet agent, toute sélection de « personnalisé» est correcte; la reproductibilité exacte des chaînes n’est pas l’objectif.
Configurer input-points.json
Ouvrez MonsterSelector/entry-points.json et remplacez l'intégralité de son contenu par les éléments suivants. Encore une fois, conservez la valeur uniqueId générée par votre élaboration plutôt que d'utiliser l'espace réservé.
Le JSON ci-dessous définit un point d'entrée agent unique, que vous appelez dans les étapes ci-dessous. Une solution peut exposer plusieurs points d'entrée (par exemple, une variante simple et une variante à entrée étendue du même agent), mais un seul est tout ce dont nous avons besoin ici.
{
"$schema": "https://cloud.uipath.com/draft/2024-12/entry-point",
"$id": "entry-points.json",
"entryPoints": [
{
"filePath": "/content/agent.json",
"uniqueId": "your-scaffold-generated-uuid-here",
"type": "agent",
"input": {
"type": "object",
"properties": {
"questDescription": {
"type": "string",
"description": "Description of the quest"
},
"monsters": {
"type": "array",
"description": "Candidate monsters from the D&D 5e API"
}
},
"required": ["questDescription", "monsters"]
},
"output": {
"type": "object",
"properties": {
"monsterIndex": {
"type": "string",
"description": "The index slug of the chosen monster"
}
}
}
}
]
}
{
"$schema": "https://cloud.uipath.com/draft/2024-12/entry-point",
"$id": "entry-points.json",
"entryPoints": [
{
"filePath": "/content/agent.json",
"uniqueId": "your-scaffold-generated-uuid-here",
"type": "agent",
"input": {
"type": "object",
"properties": {
"questDescription": {
"type": "string",
"description": "Description of the quest"
},
"monsters": {
"type": "array",
"description": "Candidate monsters from the D&D 5e API"
}
},
"required": ["questDescription", "monsters"]
},
"output": {
"type": "object",
"properties": {
"monsterIndex": {
"type": "string",
"description": "The index slug of the chosen monster"
}
}
}
}
]
}
Comprendre agent.json et input-points.json
agent.jsonest la définition de l'agent: les paramètres du modèle, l'invite système et les schémas d'entrée et de sortie.entry-points.jsonexpose ces schémas au runtime de la solution.- Attention: les blocs
inputSchemaetoutputSchemadoivent être identiques dans les deux fichiers. Une incompatibilité entraîne l’échec de la validation.
S’adapte à votre cas d’utilisation. Pour créer un autre agent, remplacez les chaînes content dans messages[0] par votre invite système et mettez à jour les blocs properties dans inputSchema et outputSchema pour qu'ils correspondent aux champs auxquels votre invite fait référence. Implémentez ces mêmes modifications dans entry-points.json. Les paramètres settings, metadata, type et de structure de message restent inchangés.
Étape 6 - Validez l’agent
Dans le répertoire de la solution, validez l’agent:
uip agent validate MonsterSelector
uip agent validate MonsterSelector
Vous devriez voir "Status": "Valid" avec "StorageVersion": "50.0.0" et un résumé "Validated" montrant agent: true. La validation génère également les fichiers .agent-builder/ utilisés par Studio Web; vous n'avez pas besoin d'y remédier.
Si la validation échoue, confirmez que inputSchema et outputSchema sont identiques dans agent.json et entry-points.json, et que chaque variable référencée dans messages[1].content utilise le préfixe input. (par exemple, {{input.questDescription}}).
Une fois l'agent validé localement, vous êtes prêt à le télécharger sur Studio Web et à exécuter un test en direct dans la section suivante.