---
title: "ஏஜென்ட் படிகள் மற்றும் ஒப்படைப்புகள்"
description: "ஏஜென்டை தனித்தனி வழிமுறைகள், கருவிகள் மற்றும் சேகரிக்கப்பட்ட மதிப்புகளுடன் படிகளாகப் பிரித்து, அழைப்பின் நடுவில் ஏஜென்டுகளுக்கு இடையே அழைப்புகளை மாற்றுங்கள்."
---

ஒரே prompt மாடலுக்கு முழுப் பணியையும் ஒரே நேரத்தில் வழங்குகிறது. **படிகள்** அழைப்பின்
ஒரு கட்டத்தை ஒரே நேரத்தில் வழங்குகின்றன: ஒவ்வொரு படிக்கும் தனிப்பட்ட வழிமுறைகள், தனிப்பட்ட கருவிகள்,
விருப்பமான சொற்சொல்லாகப் பேசப்படும் வரி, மற்றும் அடுத்ததற்குச் செல்வதற்கு முன் அது சேகரிக்க வேண்டிய
மதிப்புகள் உள்ளன. **ஒப்படைப்புகள்** உங்கள் நிறுவனத்தில் உள்ள மற்றொரு ஏஜென்ட் அழைப்பின் நடுவில்
பொறுப்பேற்க அனுமதிக்கின்றன; உரையாடல் பதிவு அப்படியே இருக்கும் என்பதால், அழைப்பாளர் தங்களை மீண்டும் கூற வேண்டியதில்லை.

ஒவ்வொரு ஏஜென்ட்டும் ஒற்றை prompt ஆகத் தொடங்குகிறது. நீங்கள் படிகள் அல்லது ஒப்படைப்புகளைச் சேர்க்கும் வரை
அதில் எதுவும் மாறாது.

## படிகளா அல்லது ஒற்றை prompt ஆ?

| படிகளைப் பயன்படுத்த வேண்டிய சூழல் | ஒற்றை prompt ஆக வைத்திருக்க வேண்டிய சூழல் |
| --- | --- |
| அழைப்பில் வரிசையாக நடக்க வேண்டிய கட்டங்கள் உள்ளன: முதலில் சரிபார்த்து, பின்னர் முன்பதிவு செய்தல். | உரையாடல் திறந்த நிலையில் உள்ளது: FAQ, வரவேற்பு, பொதுவான ஆதரவு. |
| ஏஜென்ட் அடுத்ததற்குச் செல்வதற்கு முன் ஒரு மதிப்பு பதிவுசெய்யப்பட வேண்டும். | நிர்ணயிக்கப்பட்ட வரிசையில் எதையும் சேகரிக்க வேண்டியதில்லை. |
| "18 வயதிற்குக் குறைந்த அழைப்பாளர்கள் பாதுகாவலரிடம் செல்ல வேண்டும்" போன்ற விதி ஒருபோதும் தளரக்கூடாது. | ஒவ்வொரு கிளைக்கும் மாடலின் தீர்ப்பு போதுமானது. |
| அழைப்பில் ஒரு நிர்ணயிக்கப்பட்ட இடத்தில் தேடல் இயக்கப்பட வேண்டும். | அழைப்பாளர் கேட்கும் போதெல்லாம் கருவிகளை அழைக்கலாம். |
| அழைப்பின் ஒரு பகுதி, தனிப்பட்ட prompt மற்றும் குரலுடன், வேறொரு ஏஜென்ட்டுக்குச் சொந்தமானது. | ஒரே ஆளுமை அனைத்தையும் கையாள்கிறது. |

படிகள் ஸ்கிரிப்ட் செய்யப்பட்ட தொலைபேசி மரம் அல்ல. ஒரு படிக்குள், மாடல் ஒற்றை prompt உடன் செய்வதுபோல்
உரையாடலை நடத்துகிறது. அந்தப் படி, அது எதில் பணிபுரிகிறது, எந்தக் கருவிகளைப் பயன்படுத்தலாம், வெளியேறுவதற்கு
முன் அதற்கு என்ன தேவை என்பதைத் தீர்மானிக்கிறது.

## படிகளைக் கொண்ட ஏஜென்ட் எவ்வாறு உருவாக்கப்படுகிறது

ஒரு ஏஜென்ட்டில் படிகள் இருக்கும்போது, அதன் `prompt` இல் **பகிரப்பட்ட வழிமுறைகள்** இருக்கும்:
ஒவ்வொரு படியிலும் பொருந்தும் ஆளுமை மற்றும் விதிகள். ஒவ்வொரு படியும் அதன் மேல் தனிப்பட்ட
வழிமுறைகளைச் சேர்க்கிறது. ஒவ்வொரு முறையிலும் மாடல் பகிரப்பட்ட வழிமுறைகள், நடப்புப் படியின்
பெயர் மற்றும் வழிமுறைகள், இதுவரை சேகரிக்கப்பட்ட மதிப்புகள் ஆகியவற்றைப் பார்க்கிறது.

பில்டரில், ஏஜென்ட்டை **ஒற்றை prompt** இலிருந்து **படிகள்** ஆக மாற்றுங்கள். ஒவ்வொரு படிக்கும் அதன் பெயர்,
வழிமுறைகள், சொல்லும் வரி, கருவிகள், சேகரிக்கப்பட்ட மதிப்புகள் மற்றும் மாற்றங்கள் கொண்ட அட்டை,
ஒப்படைப்புகள் தேர்வி, மற்றும் படிகளின் படிக்க-மட்டும் பாய்வு வரைபடம் கிடைக்கும். மீண்டும் ஒற்றை prompt க்கு
மாற்றும்போது, பகிரப்பட்ட வழிமுறைகளையும் ஒவ்வொரு படியையும் ஒன்றிணைக்கும் தட்டையான prompt வழங்கப்படும்.

API வழியாக, `steps` மற்றும் `handoffs` என்பவை
[agent](/api-reference/agents) இல் உள்ள புலங்கள். ஒவ்வொரு ஏஜென்ட் புலத்தைப் போலவே, `PATCH` அவற்றை
வரைவில் நிலைப்படுத்தும்; `POST /v1/agents/{agent_id}/deploy` அவற்றை நேரலையாக்கும். 
`"steps": null` அனுப்பினால் ஏஜென்ட் மீண்டும் ஒற்றை prompt க்கு மாறும். சோதனை அழைப்புகளும்
**பேசு**வும் வரைவையே இயக்கும்.

<Tip>
  [கோபைலட்](/ta/guides/ask-the-copilot), ஒரு விளக்கத்திலிருந்து படிகளை உருவாக்க முடியும்
  ("முன்பதிவு செய்வதற்கு முன் பிறந்த தேதியைச் சரிபார்க்கும் படியைச் சேர்க்கவும்"), மேலும் மற்றவற்றைத்
  தொடாமல் ஒரு படியைத் திருத்த முடியும்.
</Tip>

### படிப் புலங்கள்

| புலம் | பொருள் |
| --- | --- |
| `id` | கட்டாயம். சிற்றெழுத்துகள், எண்கள் மற்றும் அடிக்கோடுகள்; எழுத்தில் தொடங்கி, அதிகபட்சம் 40 எழுத்துகள். ஏஜென்ட்டிற்குள் தனித்துவமானது. |
| `name` | கட்டாயமான காட்சிப் பெயர், 1 முதல் 80 எழுத்துகள் வரை. |
| `instructions` | கட்டாயம், அதிகபட்சம் 20,000 எழுத்துகள். `prompt` போன்று `{{var}}` [அழைப்பு மாறிகளை](/ta/guides/call-variables) ஆதரிக்கிறது. |
| `say` | படிக்குள் நுழையும்போது சொற்சொல்லாகப் பேசப்படும் விருப்பமான வரி, அதிகபட்சம் 1,000 எழுத்துகள். `{{var}}` ஐ ஆதரிக்கிறது. |
| `tools` | `null` படிக்கு ஏஜென்ட்டுடன் இணைக்கப்பட்ட ஒவ்வொரு கருவியையும் வழங்குகிறது. பட்டியல் ஒன்று, பெயரின்படி, அந்தக் கருவிகளுக்கு மட்டுமே படியை வரம்பிடும். `end_call` மற்றும் `transfer_call` போன்ற உள்ளமைச் செயல்கள் ஒவ்வொரு படியிலும் ஏஜென்ட்டின் அமைப்புகளைப் பின்பற்றும். |
| `collect` | படி சேகரிக்கும் அதிகபட்சம் 20 மதிப்புகள். ஒவ்வொன்றிலும் `name`, `type`, `description`, மற்றும் `required` இருக்கும் (இயல்புநிலை `true`). |
| `on_enter_tool` | விருப்பமான கருவிப் பெயர்; படிக்குள் நுழையும்போது தானாக அழைக்கப்படும். [வெப்ஹுக் படிகள்](#webhook-steps) என்பதைப் பார்க்கவும். |
| `transitions` | படி அடுத்து செல்லக்கூடிய இடங்களின் வரிசைப்படுத்தப்பட்ட பட்டியல். [மாற்றங்கள்](#transitions) என்பதைப் பார்க்கவும். |
| `global_when` | விருப்பமானது. எந்தப் படியிலிருந்தும் படியை அடையக்கூடியதாக மாற்றுகிறது. [உலகளாவிய படிகள்](#global-steps) என்பதைப் பார்க்கவும். |
| `voice` | இந்தப் படிக்கான விருப்பமான குரல் id. ஏஜென்ட் தனிப்பயன் குரல் உள்ளமைவைப் பயன்படுத்தும்போது புறக்கணிக்கப்படும். |

வரைபடமே `{"start_step": "<step id>", "steps": [...]}` ஆகும். அழைப்பு
`start_step` இல் தொடங்கும்.

## மாற்றங்கள்

ஒவ்வொரு மாற்றத்திலும் `to`, ஒரு படி id, மற்றும் பின்வருவனவற்றில் துல்லியமாக ஒன்று இருக்கும்:

- **`when`**: எளிய மொழியில் எழுதப்படும், மேலும் **மாடல் முடிவு செய்கிறது**. ஏஜென்ட்டுக்கு
  உள்ளமைக்கப்பட்ட `go_to_step` கருவி கிடைக்கும்; அதில் அது செல்லக்கூடிய படிகள் பட்டியலிடப்பட்டிருக்கும், மேலும் ஒவ்வொரு
  `when`-உம் அதைத் தேர்ந்தெடுப்பதற்கான காரணமாக இருக்கும்.
- **`condition`**: சேகரிக்கப்பட்ட மதிப்புகளுக்கான ஒரு விதி, மேலும் **குறியீடு முடிவு செய்கிறது**. மாடல்
  இதைத் தவிர்க்கவோ அல்லது பேசித் தாண்டவோ முடியாது.
- **`"always": true`**: சரிபார்ப்பின்றி தொடரவும். குறியீடு முதலில் முடிவு செய்கிறது: ஒரு
  படி உள்ளிடப்பட்டவுடன் அல்லது அதன் தேவையான மதிப்புகள் சேகரிக்கப்பட்டவுடன், மாடல்
  `when`-ஐத் தேர்ந்தெடுப்பதற்கு முன், பொருந்தும் முதல் `condition` அல்லது `always` மாற்றம் செயல்படும். எனவே
  `always`-ஐ நிபந்தனைகளுக்குப் பிறகு அவற்றின் மாற்றாக வையுங்கள் அல்லது ஒரு படியை நேரடியாக
  அடுத்த படியுடன் இணைக்க அதைத் தனியாகப் பயன்படுத்துங்கள். `always` கொண்ட ஒரு படி ஒருபோதும்
  `when` தேர்வுக்காகக் காத்திருக்காது.

ஒரு `condition` என்பது `{"value": <collected name or dotted path>, "op": <op>, "target": <literal>}`:

| `op` | மதிப்பு உண்மையாக இருக்கும் நிலை |
| --- | --- |
| `eq`, `ne` | `target`-க்கு சமம் அல்லது சமமல்ல |
| `lt`, `lte`, `gt`, `gte` | `target`-ஐ விடக் குறைவு, அதிகபட்சம், அதிகம் அல்லது குறைந்தபட்சம் |
| `in`, `not_in` | `target` பட்டியலில் உள்ள மதிப்புகளில் ஒன்று அல்லது அதில் இல்லாதது |
| `exists`, `missing` | சேகரிக்கப்பட்டுள்ளது அல்லது சேகரிக்கப்படவில்லை (`target` இல்லை) |

`eq`, `ne`, `in` மற்றும் `not_in` இடைவெளிகளை நீக்கிய பிறகு, உரையை எழுத்து வேறுபாட்டைக் கணக்கில் கொள்ளாமல் ஒப்பிடும்.
எண்கள் எண்களாகவும், தேதிகள் `YYYY-MM-DD` சரங்களாகவும் ஒப்பிடப்படும். ஒருபோதும்
சேகரிக்கப்படாத மதிப்பு, `missing` தவிர மற்ற எல்லா op-களையும் தவறாக மாற்றும்.

`when` மற்றும் `global_when`-ஐ, சொல்ல வேண்டிய விஷயமாக அல்லாமல், "அழைப்பாளர்
சந்திப்பை முன்பதிவு செய்ய விரும்புகிறார்" போன்ற நிபந்தனையாக எழுதுங்கள். ஏஜென்ட் அவற்றை உள்புற
வழிமாற்றக் குறிப்புகளாகப் பார்க்கும்; அவற்றை ஒருபோதும் சத்தமாக வாசிக்கவோ, படிகளை
மாற்றுவதைப் பற்றிக் குறிப்பிடவோ வேண்டாம் என்று அறிவுறுத்தப்படும்.

மாடல் `go_to_step`-ஐ அழைக்கும்போது:

1. அந்தப் படியில் உள்ள ஒவ்வொரு `required` மதிப்பும் இருக்க வேண்டும். ஒன்று இல்லையெனில்,
   எது இல்லை என்பதை மாடலுக்குக் கூறி, அழைப்பாளரிடம் அதைக் கேட்கும்.
2. மதிப்புகள் சேமிக்கப்படும்.
3. `condition` மற்றும் `always` மாற்றங்கள் வரிசையாகச் சரிபார்க்கப்படும். முதல் பொருத்தம்
   செயல்படும்.
4. இல்லையெனில், மாடல் தேர்ந்தெடுத்த படிக்குச் ஏஜென்ட் நகரும்.
5. எதுவும் பொருந்தாமலும் மாடல் எந்தப் படியையும் குறிப்பிடாமலும் இருந்தால், ஏஜென்ட் இருக்கும் இடத்திலேயே இருக்கும்.

[உலகளாவிய படிக்கு](#global-steps) செல்லும் தாவல் விதிவிலக்கு: அழைப்பாளர் தலைப்பை மாற்றியுள்ளார்,
எனவே தற்போதைய படியில் இன்னும் தேவையான மதிப்புகள் இல்லாவிட்டாலும், அந்தப் படியின் நிபந்தனைகள்
சரிபார்க்கப்படுவதற்கு முன்பே அது தொடரும்.

ஒரு படி உள்ளிடப்படும் ஒவ்வொரு முறையும் `condition` மற்றும் `always` மாற்றங்களும் சரிபார்க்கப்படும்;
எனவே குறியீடு முடிவு செய்யும் படிகளின் தொடர் ஒரே முறையில் செயல்படும். இந்தத் தொடர் பின்வரும் நிலையில் நிற்கும்:

- இந்தச் செயல்பாட்டில் ஏற்கனவே சென்ற படியில்;
- 8 தாவல்களுக்குப் பிறகு;
- `on_enter_tool` கொண்ட படியைத் தவிர, இன்னும் சேகரிக்க வேண்டிய தேவையான மதிப்புகளைக் கொண்ட படியில்
  (ஒரு webhook படி எப்போதும் அதன் முடிவின் அடிப்படையில் வழிமாற்றப்படும்).

தொடர் நிற்கும் படியின் `say` வரி மட்டுமே பேசப்படும்.

மாற்றங்கள் இல்லாத ஒரு படி **இறுதிப் படி** ஆகும். ஏஜென்ட் அங்கே முடித்து, அதன் வழக்கமான
உள்ளமைக்கப்பட்ட செயல்களைப் பயன்படுத்தி அழைப்பை முடிக்கவோ மாற்றிவிடவோ செய்யும்.

## மதிப்புகளைச் சேகரித்தல்

ஒரு படிக்குத் தேவையானவற்றை `collect`-இல் பட்டியலிடுங்கள். மாடல் `go_to_step`-ஐ அழைக்கும்போது மதிப்புகளை அனுப்பும்,
மேலும் அவை அழைப்பின் மீதமுள்ள பகுதிக்குக் கிடைக்கும்.

| `type` | கொண்டிருப்பது |
| --- | --- |
| `string` | எந்த உரையும் |
| `number` | ஒரு எண் |
| `boolean` | `true` அல்லது `false` |
| `date` | `YYYY-MM-DD` வடிவிலான தேதி |

சேகரிக்கப்பட்ட மதிப்புகள் அழைப்பு உள்ளடக்கமாகும். அவை உரையாடல் பதிவுக்கு அடுத்ததாக அழைப்பில்
தோன்றும்; அதே தக்கவைப்பு, நீக்கம் மற்றும் மறைப்பு விதிகளைப் பின்பற்றும். ஏஜென்ட்டின் அழைப்பு
பதிவு முடக்கப்பட்டிருக்கும் போது, சேகரிக்கப்பட்ட மதிப்புகள் சேமிக்கப்படவோ webhook-களுக்கு அனுப்பப்படவோ மாட்டாது;
ஆனால் படி காலவரிசை இருக்கும். பார்க்கவும்
[அழைப்பில் இதை எங்கே பார்ப்பது](#where-to-see-it-on-a-call).

## வரிகளைச் சொல்லுதல்

ஏஜென்ட் படிக்குள் நுழையும்போது, `say` எழுதப்பட்டபடியே துல்லியமாகப் பேசப்படும். அதன் பிறகு, அந்த வரி இப்போதுதான் சொல்லப்பட்டது என்பதை அறிந்தபடி, மாடல் அதே பதிலில் புதிய படியில் தொடரும்; எனவே அதை மீண்டும் சொல்லாது. வாழ்த்துகள், கட்டாய வெளிப்படுத்தல்கள் மற்றும் நிலையான சொற்களுக்கு `say`-ஐப் பயன்படுத்துங்கள்; பதிலின் மீதியை மாடலுக்கு விடுங்கள்.

தொடக்கப் படியின் `say`, ஏதேனும் ஒப்புதல் அறிவிப்புக்குப் பிறகு, ஏஜென்ட் முதலில் பேசும்போது அதன் தொடக்க வரியாகும். அழைப்பாளர் முதலில் பேசினால், அது IVR அல்லது குரலஞ்சல் வாழ்த்துக்கு அல்லாமல், ஒருவருக்கான ஏஜென்ட்டின் முதல் பதிலைத் தொடங்கும்.

அழைப்பு `__previous__` அல்லது திருப்பி ஒப்படைத்தல் வழியாக ஒரு படிக்குத் திரும்பும்போது, அந்தப் படியின் `say` மீண்டும் பேசப்படாது. அது எப்படிக் கேட்க வேண்டுமோ அப்படியே எழுதுங்கள்: குரல் தவறாகப் படிக்கக்கூடிய எதையும் எழுத்துக்கூட்டி எழுதுங்கள். Say வரிகள் `{{var}}` அழைப்பு மாறிகளை ஆதரிக்கும்; ஆனால் சேகரிக்கப்பட்ட மதிப்புகளை ஆதரிக்காது.

## Webhook படிகள்

`on_enter_tool`-ஐ ஏஜென்ட்டின் கருவிகளில் ஒன்றாக அமைக்கவும்; படிக்குள் நுழைந்தவுடன், மாடலுக்காகக் காத்திருக்காமல் அது இயங்கும். அதன் வாதங்கள், கருவியின் அளவுருப் பெயர்களுடன் பொருந்தும் பெயர்களைக் கொண்ட சேகரிக்கப்பட்ட மதிப்புகளாகும். முடிவு 4 KB ஆகக் குறுக்கப்பட்டு, `<tool>_result` என்ற பெயரிலான சேகரிக்கப்பட்ட மதிப்பாகச் சேமிக்கப்படும்; மேலும் படியின் `condition` மற்றும் `always` மாற்றங்கள் உடனடியாகச் சரிபார்க்கப்படும். எனவே தேடல் அதன் சொந்த முடிவின் அடிப்படையில் அழைப்பை வழிமாற்ற முடியும்.

சேமிக்கப்பட்ட மதிப்பில் இரண்டு புலங்கள் உள்ளன:

| புலம் | கொண்டிருப்பது |
| --- | --- |
| `status` | உங்கள் எண்ட்பாயிண்ட் திருப்பிய HTTP நிலைக் குறியீடு. |
| `response` | பதில் உடல். |

உடல் புலத்தின் அடிப்படையில் `lookup_account_result.response.<field>` மூலம் வழிமாற்றுங்கள்; நிலைக் குறியீட்டின் அடிப்படையில் `lookup_account_result.status` மூலம் வழிமாற்றுங்கள்.

தேடல் அதிகபட்சம் 8 வினாடிகள் அல்லது கருவியின் சொந்த நேரமுடிவு அதைவிடக் குறைவாக இருந்தால் அந்த நேரமுடிவு வரை இயங்கும். அதற்கு 3 வினாடிகளுக்கு மேல் எடுத்தால், அழைப்பாளர் அமைதியில் விடப்படாமல் இருக்க ஏஜென்ட் ஒரு குறுகிய வரியைச் சொல்வார். உங்கள் எண்ட்பாயிண்ட் 400 அல்லது அதற்கு மேற்பட்ட நிலையைத் திருப்பினால் அல்லது சரியான நேரத்தில் பதிலளிக்காவிட்டால், ஏஜென்ட் இப்போது அதைச் சரிபார்க்க முடியவில்லை என்று அழைப்பாளரிடம் கூறி, தன்னால் செய்யக்கூடியவற்றுடன் தொடர்வார்.

## உலகளாவிய படிகள்

`global_when` கொண்ட ஒரு படி, அந்த விளக்கம் பொருந்தும் போதெல்லாம் எந்தப் படியிலிருந்தும் அடையப்படலாம். `when` போலவே, மாடல்தான் முடிவு செய்யும். அழைப்பாளர் எந்த நேரத்திலும் எழுப்பக்கூடிய தலைப்புகளுக்கு இதைப் பயன்படுத்துங்கள்: பில்லிங் கேள்விகள், மனிதருடன் பேசுவதற்கான கோரிக்கை, புகார்.

உலகளாவிய படியில் `"to": "__previous__"` கொண்ட மாற்றம், அழைப்பை அதற்கு முன் செயலில் இருந்த படிக்குத் திருப்பும்; எனவே அழைப்பாளர் விட்ட இடத்திலிருந்து தொடர்வார். படி மீண்டும் தொடரும்: அதன் `on_enter_tool` மீண்டும் இயங்காது, அதன் `say` மீண்டும் சொல்லப்படாது, மேலும் ஏஜென்ட் அதை ஆரம்பத்திலிருந்து தொடங்காமல் தொடர்வார்.

## கையளிப்புகள்

`handoffs` உங்கள் நிறுவனத்தில் அழைப்பை ஏற்றுக்கொள்ளக்கூடிய பிற ஏஜென்ட்களைப் பட்டியலிடுகிறது:

```json
[{"agent_id": 413, "when": "The caller asks about billing or a refund"}]
```

அந்த ஏஜென்ட்கள் மற்றும் காரணங்களுடன் ஏஜென்ட்டுக்கு உள்ளமைக்கப்பட்ட `hand_off` கருவி கிடைக்கும். மாற்றங்களைப் போலவே, ஒவ்வொரு `when` என்பதும் உள்நிலை வழிமாற்றக் குறிப்பு; ஒருபோதும் உரக்கப் படிக்கப்படாது.

கையளிக்கும்போது, ஏஜென்ட் தனது சொந்த குரலில், அழைப்பாளர் எங்கு செல்கிறார் என்பதைச் சொல்லும் ஒரு சுருக்கமான வரியைப் பேசும்; எடுத்துக்காட்டாக, "சரி, உங்களை எங்கள் பில்லிங் குழுவுக்கு இணைக்கிறேன்". பின்னர் இலக்கு ஏஜென்ட்டின் prompt, படிகள், கருவிகள் மற்றும் குரல் பொறுப்பேற்று, அதே உரையாடல் பதிவுடன் அழைப்பு தொடரும். புதிய ஏஜென்ட் சுருக்கமாகத் தன்னை அறிமுகப்படுத்தி, அழைப்பாளரின் கடைசி கோரிக்கைக்குப் பதிலளிக்கும்; மாற்றம் செய்யப்பட்டதை அறிவிக்காது. அந்த நேரத்திலிருந்து இலக்கு ஏஜென்ட்டின் அறிவுத் தளம் கிடைக்கும்.

ஒரு அழைப்பு முதல் முறையாக ஒரு ஏஜென்ட்டை அடையும்போது, அது அந்த ஏஜென்ட்டின்
`start_step` இல் தொடங்கும்: படியின் `on_enter_tool` இயங்கி, அதன் `say` பேசப்படும். ஏற்கனவே சென்ற ஏஜென்ட்டிடம் அழைப்பு மீண்டும் கையளிக்கப்படும்போது, அந்த ஏஜென்ட் `on_enter_tool` ஐ இயக்காமலும், தனது `say` ஐ மீண்டும் கூறாமலும், தன்னை மீண்டும் அறிமுகப்படுத்தாமலும், இருந்த படியிலேயே தொடரும். சேகரிக்கப்பட்ட மதிப்புகள் அழைப்பில் உள்ள ஒவ்வொரு ஏஜென்ட்டாலும் பகிரப்படுகின்றன.

- இலக்கு அதே நிறுவனத்தில் உள்ள ஏஜென்ட்டாக இருக்க வேண்டும்; ஏஜென்ட் தன்னிடமே
  கையளிக்க முடியாது.
- அழைப்பு நிலை சார்ந்த அனைத்தும் பதிலளித்த ஏஜென்ட்டிடமே இருக்கும்: தயாரிப்பு,
  மொழிகள், முதலில் பேசுவது யார், குரலஞ்சல், ஒப்புதல் அறிவிப்பு மற்றும் மற்ற
  அனைத்து அழைப்பு அமைப்புகளும்.
- இலக்குகள் மேலும் கையளிக்கலாம், மீண்டும் பின்னும் கையளிக்கலாம். ஒரு அழைப்பு அதிகபட்சம் 8 ஏஜென்ட்களை அடையலாம்.
- சோதனை அழைப்பு, நீங்கள் சோதிக்கும் ஏஜென்ட்டின் வரைவுப் பதிப்பை இயக்கும். அது கையளிக்கும் ஏஜென்ட்கள் அவற்றின் வெளியிடப்பட்ட பதிப்புகளை இயக்கும்.
- இரண்டு ஏஜென்ட்களிடம் ஒரே பெயருடனும் வேறுபட்ட வரையறைகளுடனும் ஒரு கருவி இருந்தால், அழைப்புக்காக ஒன்று மட்டுமே வைக்கப்படும்; பதிலளித்த ஏஜென்ட்டினுடையதே எப்போதும் முன்னுரிமை பெறும். நீங்கள் சேமிக்கும்போது உருவாக்கி எச்சரிக்கும்.
- ஏஜென்ட்டுக்கு படிகள் இல்லாமலும் கையளிப்புகள் இருக்கலாம். அதன் முழு prompt மாற்றமின்றிப் பயன்படுத்தப்படும்.

`go_to_step` மற்றும் `hand_off` என்பவை படிகள் அல்லது கையளிப்புகள் உள்ள ஏஜென்ட்களுக்கு ஒதுக்கப்பட்டவை; எனவே உங்கள் சொந்த கருவிகள் அந்தப் பெயர்களைப் பயன்படுத்த முடியாது.

## அழைப்பில் இதை எங்கு பார்ப்பது

அழைப்பை **அழைப்பு வரலாறு** பகுதியில் திறக்கவும். உரையாடல் பதிவுக்கு அடுத்துள்ள படி காலவரிசை, அழைப்பு நுழைந்த ஒவ்வொரு படியையும் அதற்கான காரணத்தையும் காட்டும்; சேகரிக்கப்பட்ட மதிப்புகளும் அதனுடன் பட்டியலிடப்படும்.

[அழைப்பு பொருள்](/api-reference/calls#retrieve-a-call) மற்றும் அழைப்பு-நிறைவு
webhook ([`telephony.complete` / `web.complete`](/ta/webhooks/call-complete)) ஆகியவை
`steps_trace` மற்றும் `collected_values` ஆக அதே தரவைக் கொண்டிருக்கும். படிகள் இல்லாத அழைப்புகளில் இரண்டும் இருக்காது.

```json
"steps_trace": [
  {"t_ms": 0, "agent": "a412", "step": "greet", "via": "start"},
  {"t_ms": 51230, "agent": "a412", "step": "verify", "via": "model"},
  {"t_ms": 98410, "agent": "a412", "step": "minor", "via": "condition"}
],
"collected_values": {"full_name": "Dana Reyes", "dob": "2010-04-02", "age": 15}
```

`agent` என்பது ஏஜென்ட் id-க்கு முன் வரும் `a` ஆகும். `via`, அழைப்பை எது நகர்த்தியது என்பதைக் கூறும்:

| `via` | பொருள் |
| --- | --- |
| `start` | அழைப்பு இந்தப் படியில் தொடங்கியது. |
| `model` | மாதிரி `go_to_step`, ஒரு `when` அல்லது ஒரு `global_when` மூலம் படியைத் தேர்ந்தெடுத்தது. |
| `condition` | ஒரு `condition` அல்லது `always` மாற்றம் பொருந்தியது. |
| `on_enter` | ஒரு webhook படியின் முடிவில் ஒரு மாற்றம் பொருந்தியது. |
| `handoff` | மற்றொரு ஏஜென்ட் பொறுப்பேற்றது. |

## படிகள் இயங்கும் இடங்கள்

படிகள் **Spark**, **Bolt** மற்றும் ஒவ்வொரு **Storm** தயாரிப்பிலும், உள்வரும், வெளிச்செல்லும் மற்றும் பிரச்சார அழைப்புகளிலும், சோதனை அழைப்புகளிலும், வலை மற்றும் விட்ஜெட் அழைப்புகளிலும் இயல்பாக இயங்கும்.

மற்ற எல்லா இடங்களிலும் ஏஜென்ட் கட்டமைப்பு இல்லாமல் தொடர்ந்து இயங்கும்: பகிரப்பட்ட வழிமுறைகளையும் ஒவ்வொரு படியையும் வரிசைப்படி ஒன்றிணைக்கும் தட்டையாக்கப்பட்ட prompt ஐ அது இயக்கும். இதில் அடங்குபவை:

- சோதனைநிலை Bolt தயாரிப்புகள்;
- [Realtime](/ta/guides/use-with-openai-realtime) அமர்வுகள், இதில்
  சேமித்த ஏஜென்ட்டுக்கான அமர்வுகளும் அடங்கும்;
- [இயங்குநிலை அழைப்பு கட்டமைப்பு](/ta/guides/dynamic-call-config)
  webhook வழங்கும் inline கட்டமைப்புகள். `agent_id` ஐ வழங்கும் webhook, அந்த ஏஜென்ட்டின் படிகளைப் பயன்படுத்தும்.

## வரம்புகள்

| வரம்பு | மதிப்பு |
| --- | --- |
| ஒரு ஏஜென்ட்டுக்கான படிகள் | 100 |
| ஒரு படிக்கு சேகரிக்கப்படும் மதிப்புகள் | 20 |
| ஒரு ஏஜென்ட்டுக்கான ஒப்படைப்பு இலக்குகள் | 8 |
| ஒரு அழைப்பில் அணுகக்கூடிய ஏஜென்ட்கள் | 8 |
| `steps` JSON-இன் அளவு | 200 KB |
| படி `instructions` | 20,000 எழுத்துகள் |
| `say` வரி | 1,000 எழுத்துகள் |
| சேமிக்கப்பட்ட `on_enter_tool` முடிவு | 4 KB |

ஒரு விதியை மீறும் சேமிப்பு, தவறான புலத்தின் பாதையுடன் `400`-ஐ வழங்கும்;
உதாரணமாக `steps.steps[2].transitions[0].to`. `tools` மற்றும்
`on_enter_tool`-இல் உள்ள கருவிப் பெயர்கள், ஏஜென்ட்டுடன் இணைக்கப்பட்ட கருவிகளாக இருக்க வேண்டும்.

ஒவ்வொரு படிக்குமான மொழிகள், மாடலைத் தவிர்க்கும் ஸ்கிரிப்ட் செய்யப்பட்ட படிகள் மற்றும்
say வரிகளுக்குள் சேகரிக்கப்படும் மதிப்புகள் ஆதரிக்கப்படவில்லை.

## இறக்குமதி செய்யப்பட்ட ஏஜென்ட்கள்

Retell, Bland, Vapi அல்லது ElevenLabs-இலிருந்து [இறக்குமதி செய்வது](/ta/guides/import-agents),
பல-prompt ஏஜென்ட்கள், ஓட்டங்கள், பாதைகள் மற்றும் பணிப்பாய்வுகளை படிகளாகவும்,
ஸ்குவாட்கள் மற்றும் ஏஜென்ட் இடமாற்றங்களை இறக்குமதி செய்யப்பட்ட ஏஜென்ட்களுக்கு இடையிலான
ஒப்படைப்புகளாகவும் கொண்டு வருகிறது. இறக்குமதிக்கு முன் மதிப்பாய்வுப் பக்கம் இரண்டையும் காட்டும்.

## எடுத்துக்காட்டு: பல் மருத்துவ வரவேற்பு

வரிசையாக மூன்று படிகள்: வரவேற்பு, நோயாளியின் விவரங்களைச் சேகரித்தல், முன்பதிவு.

```json
{
  "prompt": "You are Ava, the front desk assistant at Acme Dental. Be warm and brief. Ask one question at a time.",
  "steps": {
    "start_step": "greet",
    "steps": [
      {
        "id": "greet",
        "name": "Greeting",
        "instructions": "Greet the caller and ask how you can help.",
        "say": "Thanks for calling Acme Dental, this is Ava. How can I help you today?",
        "tools": null,
        "collect": [],
        "transitions": [
          {"to": "details", "when": "The caller wants to book an appointment"}
        ]
      },
      {
        "id": "details",
        "name": "Patient details",
        "instructions": "Ask for the caller's full name, date of birth and the reason for the visit. Read the date of birth back and ask the caller to confirm it.",
        "tools": null,
        "collect": [
          {"name": "full_name", "type": "string", "description": "Caller's full name", "required": true},
          {"name": "dob", "type": "date", "description": "Date of birth", "required": true},
          {"name": "reason", "type": "string", "description": "Reason for the visit", "required": true},
          {"name": "new_patient", "type": "boolean", "description": "First visit to the practice", "required": false}
        ],
        "transitions": [
          {"to": "book", "when": "The caller has confirmed their details"}
        ]
      },
      {
        "id": "book",
        "name": "Book",
        "instructions": "Offer the two earliest open slots from book_slot and book the one the caller picks. Confirm the date and time, then say goodbye and end the call.",
        "tools": ["book_slot"],
        "collect": [],
        "transitions": []
      }
    ]
  }
}
```

`PATCH /v1/agents/{agent_id}` மூலம் அதை நிலைப்படுத்தி, **பேசு** மூலம் முயற்சித்து, பின்னர் வெளியிடுங்கள்.
பெயர், பிறந்த தேதி மற்றும் காரணம் சேகரிக்கப்படும் வரை `details` படி முன்பதிவுக்கு
ஒப்படைக்க முடியாது; `new_patient` விருப்பமானது.

## எடுத்துக்காட்டு: வயது வரம்பு கொண்ட கிளை

மாடல் யாருடனும் பேச முடியும், ஆனால் யாருக்கு முன்பதிவு செய்யப்படும் என்பதை குறியீடு தீர்மானிக்கும்.
வயதைச் சேகரித்து, மாடலின் சொந்தத் தேர்வு பரிசீலிக்கப்படுவதற்கு முன் அதன்படி வழிமாற்றுங்கள்.

```json
{
  "id": "verify",
  "name": "Verify age",
  "instructions": "Ask for the caller's age.",
  "tools": null,
  "collect": [
    {"name": "age", "type": "number", "description": "Caller's age in years", "required": true}
  ],
  "transitions": [
    {"to": "guardian", "condition": {"value": "age", "op": "lt", "target": 18}},
    {"to": "book", "when": "The caller has given their age"}
  ]
}
```

பதினைந்து என்று கூறும் அழைப்பாளர், மாடல் எதைத் தீர்மானித்தாலும் `guardian`-க்கு செல்கிறார்.
மற்ற அனைவரும் `book`-க்கு செல்கிறார்கள். இரண்டும் வரைபடத்தின் வேறு இடங்களில் உள்ள சாதாரண படிகள்.

## எடுத்துக்காட்டு: கணக்கு தேடல் webhook படி

அழைப்பாளர் ஒரு கணக்கு எண்ணை வழங்குகிறார்; அடுத்த படிக்குள் நுழையும்போது தேடல் இயங்குகிறது,
அதன் முடிவு வழியைத் தேர்ந்தெடுக்கிறது. சுருக்கத்திற்காக `not_found`, `collections` மற்றும் `support`
படிகள் விடப்பட்டுள்ளன.

```json
[
  {
    "id": "identify",
    "name": "Identify",
    "instructions": "Ask for the caller's account number and read it back digit by digit.",
    "tools": null,
    "collect": [
      {"name": "account_number", "type": "string", "description": "Account number", "required": true}
    ],
    "transitions": [
      {"to": "lookup", "when": "The caller has confirmed their account number"}
    ]
  },
  {
    "id": "lookup",
    "name": "Look up account",
    "instructions": "Tell the caller what you found on their account and ask how you can help.",
    "tools": ["lookup_account"],
    "collect": [],
    "on_enter_tool": "lookup_account",
    "transitions": [
      {"to": "not_found", "condition": {"value": "lookup_account_result.response.found", "op": "eq", "target": false}},
      {"to": "collections", "condition": {"value": "lookup_account_result.response.account_status", "op": "in", "target": ["past_due", "suspended"]}},
      {"to": "support", "when": "The caller needs help with an active account"}
    ]
  }
]
```

`lookup_account` அதன் அளவுருவுக்கு அந்தப் பெயர் இருப்பதால் `account_number` ஐப் பெறுகிறது.
பதிலளிப்பு உடலில் `"found": false` இருந்தால், அழைப்பு
`not_found` க்குச் செல்கிறது. அதன் `account_status`, `past_due` அல்லது `suspended` ஆக இருந்தால், அது
`collections` க்குச் செல்கிறது. செயலில் உள்ள கணக்கு `lookup` இல் இருக்கும்; அங்கு மாடல் உதவி செய்து
`support` க்குச் செல்கிறது. தோல்வியடைந்த தேடலை அதற்கென உள்ள படிக்கு அனுப்ப, முதலில் நிலையின் மீது
நிபந்தனைகளைச் சேர்க்கவும்: பிழை பதிலளிப்பு அதன் நிலைக் குறியீட்டைச் சேமிக்கும்; எனவே
`{"value": "lookup_account_result.status", "op": "gte", "target": 400}`
அதைப் பிடிக்கும். காலாவதி அல்லது பதில் இல்லாத நிலை `"error"` ஐச் சேமிக்கும்; எனவே
`{"value": "lookup_account_result.status", "op": "eq", "target": "error"}`
அதைப் பிடிக்கும்.

## எடுத்துக்காட்டு: முன்வரவேற்பிலிருந்து பில்லிங் வரை

இரண்டு ஏஜென்ட்கள். முன்வரவேற்பு (ஏஜென்ட் `412`) ஒவ்வொரு அழைப்புக்கும் பதிலளித்து, பில்லிங்
கேள்விகளை அதன் சொந்த prompt, கருவிகள் மற்றும் குரலைக் கொண்ட பில்லிங் ஏஜென்ட்டிடம் (ஏஜென்ட் `413`) ஒப்படைக்கிறது.

முன்வரவேற்பில்:

```json
{
  "handoffs": [
    {"agent_id": 413, "when": "The caller asks about a bill, a payment or a refund"}
  ]
}
```

பில்லிங் ஏஜென்ட்டில், அழைப்பாளரை மீண்டும் ஒப்படைக்க முடியும் வகையில்:

```json
{
  "handoffs": [
    {"agent_id": 412, "when": "The billing question is resolved and the caller needs something else"}
  ]
}
```

முன்வரவேற்பு, "எங்கள் பில்லிங் குழுவுடன் உங்களை இணைக்கிறேன்" போன்ற ஒரு குறுகிய வரியைக் கூறும்;
பில்லிங் ஏஜென்ட் தன்னை அறிமுகப்படுத்தி, முன்வரவேற்பு விட்ட இடத்திலிருந்து உரையாடலைத் தொடரும்.
பில்லிங் மீண்டும் ஒப்படைக்கும்போது, அழைப்பாளரை மீண்டும் வரவேற்காமல் முன்வரவேற்பு இருந்த இடத்திலிருந்து தொடரும்.
அழைப்பின் தயாரிப்பு, மொழிகள், ஒப்புதல் அறிவிப்பு மற்றும் பிற அழைப்பு அமைப்புகள் முன்வரவேற்புடனேயே இருக்கும்,
ஏனெனில் அதுவே பதிலளித்தது.

பில்லிங்கிற்கு அதன் சொந்த ஏஜென்ட் தேவையில்லை; அதன் சொந்த வழிமுறைகள் மட்டும் தேவை என்றால்,
முன்வரவேற்பில் ஒரு உலகளாவிய படியைப் பயன்படுத்தவும். கேள்விக்கு பதிலளிக்கப்பட்டதும், அழைப்பு
அழைப்பாளர் இருந்த எந்தப் படிக்கோ அதற்குத் திரும்பும்:

```json
{
  "id": "billing",
  "name": "Billing questions",
  "instructions": "Answer questions about bills and payments. Offer to send a payment link by email.",
  "tools": null,
  "collect": [],
  "transitions": [
    {"to": "__previous__", "when": "The billing question is answered"}
  ],
  "global_when": "The caller asks about a bill or payment at any point"
}
```

## அடுத்த படிகள்

<CardGroup cols={2}>
  <Card title="Prompting வழிகாட்டி" icon="pen" href="/ta/guides/prompting">
    தொலைபேசி உரையாடல்களில் பயனுள்ளதாக இருக்கும் பகிரப்பட்ட வழிமுறைகளையும் படி வழிமுறைகளையும் எழுதுங்கள்.
  </Card>
  <Card title="டூல் ஒருங்கிணைப்பை உருவாக்குங்கள்" icon="code" href="/ta/guides/build-tool-integration">
    உங்கள் படிகள் மற்றும் webhook படிகள் அழைக்கும் டூல்களை உருவாக்குங்கள்.
  </Card>
  <Card title="உங்கள் ஏஜென்ட்களைச் சோதியுங்கள்" icon="flask" href="/ta/guides/test-agents">
    deploy செய்வதற்கு முன் ஒவ்வொரு கிளையிலும் ஒரே சூழ்நிலைகளை இயக்குங்கள்.
  </Card>
  <Card title="Agents API" icon="robot" href="/api-reference/agents">
    ஒவ்வொரு ஏஜென்ட் புலம், வரைவு மற்றும் deploy.
  </Card>
</CardGroup>
