(ਇਸ ਪਾਠ ਦਾ ਵੀਡੀਓ ਵੇਖਣ ਲਈ ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ ‘ਤੇ ਕਲਿੱਕ ਕਰੋ)
ਟੂਲ ਦਿਲਚਸਪ ਹਨ ਕਿਉਂਕਿ ਇਹ ਏਆਈ ਏਜੰਟਾਂ ਨੂੰ ਵੱਡੀ ਵਿਚ ਪਹੁੰਚ ਵਾਲੀਆਂ ਛਮਤਾਵਾਂ ਦਿੰਦੇ ਹਨ। ਇਸਦੇ ਬਜਾਏ ਕਿ ਏਜੰਟ ਕੋਲ ਸੀਮਿਤ ਕਾਰਵਾਈਆਂ ਹੋਣ, ਇਕ ਟੂਲ ਸ਼ਾਮਲ ਕਰਨ ਨਾਲ, ਏਜੰਟ ਹੁਣ ਬਹੁਤ ਸਾਰੀਆਂ ਕਾਰਵਾਈਆਂ ਕਰ ਸਕਦਾ ਹੈ। ਇਸ ਅਧਿਆਇ ਵਿੱਚ, ਅਸੀਂ ਟੂਲ ਯੂਜ਼ ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਦੀ ਚਰਚਾ ਕਰਾਂਗੇ, ਜੋ ਕਿ ਦੱਸਦਾ ਹੈ ਕਿ ਏਆਈ ਏਜੰਟ ਆਪਣੇ ਲਕਸ਼ਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕਿਵੇਂ ਖਾਸ ਟੂਲ ਵਰਤ ਸਕਦੇ ਹਨ।
ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਹੇਠਲੀਆਂ ਪ੍ਰਸ਼ਨਾਂ ਦੇ ਜਵਾਬ ਲੱਭਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹਾਂ:
ਇਸ ਪਾਠ ਨੂੰ ਪੂਰਾ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਤੁਸੀਂ ਯੋਗ ਹੋਵੋਗੇ:
ਟੂਲ ਯੂਜ਼ ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਦਾ ਧਿਆਨ LLMs ਨੂੰ ਬਾਹਰੀ ਟੂਲਾਂ ਨਾਲ ਇੰਟਰਐਕਟ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਦੇਣ ‘ਤੇ ਹੈ ਤਾਂ ਜੋ ਖਾਸ ਲਕਸ਼ ਪ੍ਰਾਪਤ ਕੀਤੇ ਜਾ ਸਕਣ। ਟੂਲ ਇੱਕ ਕੋਡ ਹੁੰਦੇ ਹਨ ਜੋ ਏਜੰਟ ਵੱਲੋਂ ਕਾਰਜ ਕਰਨ ਲਈ ਚਲਾਏ ਜਾ ਸਕਦੇ ਹਨ। ਇੱਕ ਟੂਲ ਸਧਾਰਨ ਫੰਕਸ਼ਨ ਹੋ ਸਕਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਕੈਲਕुलेਟਰ, ਜਾਂ ਤੀਜੀ-ਪਾਰਟੀ ਸੇਵਾ ਵਾਂਗ ਐਪੀਆਈ ਕਾਲ ਜਿਵੇਂ ਸਟਾਕ ਕੀਮਤ ਜਾਂ ਮੌਸਮ ਦੀ ਭਵਿੱਖਬਾਣੀ। ਏਆਈ ਏਜੰਟਾਂ ਦੇ ਸੰਦਰਭ ਵਿੱਚ, ਟੂਲਾਂ ਨੂੰ ਮਾਡਲ-ਜਨਰੇਟ ਕੀਤੇ ਫੰਕਸ਼ਨ ਕਾਲਾਂ ਦੇ ਜਵਾਬ ਵਿੱਚ ਏਜੰਟਾਂ ਵੱਲੋਂ ਚਲਾਉਣ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਏਆਈ ਏਜੰਟ ਟੂਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜਟਿਲ ਕਾਰਜ ਪੂਰੇ ਕਰ ਸਕਦੇ ਹਨ, ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਨ ਜਾਂ ਫੈਸਲੇ ਕਰ ਸਕਦੇ ਹਨ। ਟੂਲ ਯੂਜ਼ ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਿੱਥੇ ਬਾਹਰੀ ਪ੍ਰਣਾਲੀਆਂ ਜਿਵੇਂ ਡਾਟਾਬੇਸ, ਵੈੱਬ ਸੇਵਾਵਾਂ, ਜਾਂ ਕੋਡ ਇੰਟਰਪ੍ਰੇਟਰਾਂ ਨਾਲ ਗਤੀਸ਼ੀਲ ਇੰਟਰਐਕਸ਼ਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ ਸਮਰੱਥਾ ਕਈ ਵੱਖ-ਵੱਖ ਵਰਤੋਂਆਂ ਲਈ ਲਾਭਦਾਇਕ ਹੈ, ਜਿਵੇਂ:
ਇਹਤਿ ਇਮਾਰਤੀ ਇੰਨਣ ਏਆਈ ਏਜੰਟ ਨੂੰ ਵੱਡੀ ਗਿਣਤੀ ਵਿੱਚ ਕਾਰਜ ਕਰਨ ਯੋਗ ਬਣਾਉਂਦੇ ਹਨ। ਆਓ ਮੁੱਖ ਤੱਤਾਂ ਨੂੰ ਵੇਖੀਏ ਜੋ ਟੂਲ ਯੂਜ਼ ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਲੋੜੀਂਦੇ ਹਨ:
ਫੰਕਸ਼ਨ/ਟੂਲ ਸਕੀਮਾਹਾਂ: ਉਪਲਬਧ ਟੂਲਾਂ ਦੀ ਵਿਸਥਾਰਿਤ ਪਰਿਭਾਸ਼ਾ, ਜਿਸ ਵਿੱਚ ਫੰਕਸ਼ਨ ਦਾ ਨਾਮ, ਉਦਦੇਸ਼, ਲੋੜੀਂਦੇ ਪੈਰामीਟਰ ਅਤੇ ਉਮੀਦ ਕੀਤੀ ਨਤੀਜੇ ਸ਼ਾਮਲ ਹਨ। ਇਹ ਸਕੀਮਾਹਾਂ LLM ਨੂੰ ਸਮਝਾਉਂਦੀਆਂ ਹਨ ਕਿ ਕਿਹੜੇ ਟੂਲ ਦਸਿਆ ਗਿਆ ਹੈ ਅਤੇ ਸਹੀ ਬੇਨਤੀ ਕਿਵੇਂ ਬਣਾਉਣੀ ਹੈ।
ਫੰਕਸ਼ਨ ਚਲਾਉਣ ਦਾ ਤਰਤੀਬੀਕਰਨ: ਇਹ ਨਿਯੰਤਰਿਤ ਕਰਦਾ ਹੈ ਕਿ ਕਦੋਂ ਅਤੇ ਕਿਵੇਂ ਟੂਲ ਵਰਤੇ ਜਾਣ, ਉਪਭੋਗਤਾ ਦੀ ਮਨਸਾ ਅਤੇ ਗੱਲਬਾਤ ਦੇ ਸੰਦਰਭ ਅਨੁਸਾਰ। ਇਸ ਵਿੱਚ ਯੋਜਨਾਕਾਰ ਮਾਡਿਊਲ, ਰੂਟਿੰਗ ਮਕੈਨੀਜ਼ਮ ਜਾਂ ਸ਼ਰਤੀ ਵਹਿਵਟ ਸ਼ਾਮਲ ਹੋ ਸਕਦੇ ਹਨ ਜੋ ਟੂਲ ਦੇ ਵਰਤੋਂ ਨੂੰ ਗਤੀਸ਼ੀਲ ਤੌਰ ‘ਤੇ ਨਿਰਧਾਰਿਤ ਕਰਦੇ ਹਨ।
ਸੰਦੇਸ਼ ਸੰਭਾਲ ਪ੍ਰਣਾਲੀ: ਉਹ ਹਿੱਸੇ ਜੋ ਉਪਭੋਗਤਾ ਦੀ ਇਨਪੁਟ, LLM ਦੇ ਜਵਾਬ, ਟੂਲ ਕਾਲਾਂ ਅਤੇ ਟੂਲਾਂ ਦੇ ਆਉਟਪੁਟ ਦਰਮਿਆਨ ਗੱਲਬਾਤ ਦੇ ਪ੍ਰਵਾਹ ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕਰਦੇ ਹਨ।
ਟੂਲ ਇੰਟੀਗ੍ਰੇਸ਼ਨ ਫਰੇਮਵਰਕ: ਉਹ ਬੁਨਿਆਦੀ ਢਾਂਚਾ ਜੋ ਏਜੰਟ ਨੂੰ ਵੱਖ ਵੱਖ ਟੂਲਾਂ ਨਾਲ ਜੋੜਦਾ ਹੈ, ਭਾਵੇਂ ਉਹ ਸਧਾਰਨ ਫੰਕਸ਼ਨ ਹੋਣ ਜਾਂ ਜਟਿਲ ਬਾਹਰੀ ਸੇਵਾਵਾਂ।
ਭੁੱਲ ਸੰਭਾਲ ਅਤੇ ਪ੍ਰਮਾਣਿਕਤਾ: ਟੂਲ ਚਲਾਉਣ ਵਿੱਚ ਅਸਫਲਤਾਵਾਂ ਦਾ ਹੱਲ ਕਰਨਾ, ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਜਾਂਚ ਕਰਨਾ ਅਤੇ ਅਣਮੁੰਕੀ ਪ੍ਰਤੀਕ੍ਰਿਆਵਾਂ ਦਾ ਪ੍ਰਬੰਧ ਕਰਨਾ।
ਸਟੇਟ ਪ੍ਰਬੰਧਨ: ਗੱਲਬਾਤ ਦੇ ਸੰਦਰਭ, ਪਹਿਲਾਂ ਹੋਏ ਟੂਲ ਇੰਟਰਐਕਸ਼ਨਾਂ ਅਤੇ ਸਥਾਈ ਡਾਟਾ ਦਾ ਟ੍ਰੈਕ ਰੱਖਣਾ, ਤਾਂ ਜੋ ਬਹੁ-ਮੁਹੰਮਤ ਗੱਲਬਾਤਾਂ ਵਿੱਚ ਸੰਗਤੀ ਯਕੀਨੀ ਹੋਵੇ।
ਹੁਣ ਅਸੀਂ ਫੰਕਸ਼ਨ/ਟੂਲ ਕਾਲਿੰਗ ਨੂੰ ਹੋਰ ਵਿਸਥਾਰ ਨਾਲ ਵੇਖਦੇ ਹਾਂ।
ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਉਹ ਮੁੱਖ ਤਰੀਕਾ ਹੈ ਜਿਸ ਨਾਲ ਅਸੀਂ LLM ਨੂੰ ਟੂਲ ਸੰਗ ਨੂੰ ਇੰਟਰਐਕਟ ਕਰਨ ਯੋਗ ਬਣਾਉਂਦੇ ਹਾਂ। ਤੁਸੀਂ ਅਕਸਰ ‘ਫੰਕਸ਼ਨ’ ਅਤੇ ‘ਟੂਲ’ ਇਕਦੂਜੇ ਦੀ ਥਾਂ ਵਰਤੇ ਜਾਂਦੇ ਵੇਖੋਗੇ ਕਿਉਂਕਿ ‘ਫੰਕਸ਼ਨਜ਼’ (ਪੁਨਰਵਰਤਨੀਯ ਕોડ ਬਲਾਕ) ਉਹ ‘ਟੂਲ’ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ ਏਜੰਟ ਕਾਰਜਾਂ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਵਰਤਦੇ ਹਨ। ਫੰਕਸ਼ਨ ਦੇ ਕੋਡ ਨੂੰ ਚਲਾਉਣ ਲਈ, LLM ਨੂੰ ਉਪਭੋਗਤਾ ਦੀ ਬੇਨਤੀ ਨੂੰ ਫੰਕਸ਼ਨ ਦੇ ਵੇਰਵੇ ਨਾਲ ਤੁਲਨਾ ਕਰਨੀ ਪੈਂਦੀ ਹੈ। ਇਸ ਲਈ ਸਾਰੇ ਉਪਲਬਧ ਫੰਕਸ਼ਨਾਂ ਦੇ ਵੇਰਵੇ ਵਾਲਾ ਇੱਕ ਸਕੀਮਾ LLM ਨੂੰ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ। LLM ਫਿਰ ਲੋੜੀਂਦੀ ਸਹੀ ਫੰਕਸ਼ਨ ਚੁਣਦਾ ਹੈ ਅਤੇ ਉਸਦਾ ਨਾਮ ਅਤੇ ਤਰਕ ਦਿੰਦਾ ਹੈ। ਚੁਨੀ ਹੋਈ ਫੰਕਸ਼ਨ ਚਲਾਈ ਜਾਂਦੀ ਹੈ, ਇਸ ਦਾ ਜਵਾਬ LLM ਨੂੰ ਵਾਪਸ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ, ਜੋ ਇਸ ਜਾਣਕਾਰੀ ਨਾਲ ਉਪਭੋਗਤਾ ਦੀ ਬੇਨਤੀ ਦਾ ਜਵਾਬ ਦਿੰਦਾ ਹੈ।
ਡਿਵੈਲਪਰਾਂ ਲਈ ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਲਾਗੂ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਲੋੜ ਹੋਏਗਾ:
ਚੱਲੋ ਇੱਕ ਉਦਾਹਰਨ ਲਈ ਦਿੱਖਾਉਂਦੇ ਹਾਂ ਕਿ ਕਿਵੇਂ ਕਿਸੇ ਸ਼ਹਿਰ ਵਿੱਚ ਮੌਜੂਦਾ ਸਮਾਂ ਲੱਭਣਾ ਹੈ:
ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਸਹਾਇਤਾਕਾਰ LLM ਤਿਆਰ ਕਰੋ:
ਸਾਰੇ ਮਾਡਲ ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ, ਇਸ ਲਈ ਜाँचਣਾ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਤੁਸੀਂ ਜੋ LLM ਵਰਤ ਰਹੇ ਹੋ ਉਹ ਇਹ ਕਰਦਾ ਹੈ। Azure OpenAI ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਅਸੀਂ Azure OpenAI ਕਲਾਇੰਟ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹਾਂ।
# ਐਜ਼ੂਰ ਓਪਨਏਆਈ ਕਲੀਐਂਟ ਨੂੰ ਸ਼ੁਰੂ ਕਰੋ
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_AI_PROJECT_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-05-01-preview"
)
ਫੰਕਸ਼ਨ ਸਕੀਮਾ ਤਿਆਰ ਕਰੋ:
ਅਗਲਾ, ਅਸੀਂ ਇੱਕ JSON ਸਕੀਮਾ ਪਰਿਭਾਸ਼ਿਤ ਕਰਾਂਗੇ ਜਿਸ ਵਿੱਚ ਫੰਕਸ਼ਨ ਦਾ ਨਾਮ, ਫੰਕਸ਼ਨ ਕੀ ਕਰਦਾ ਹੈ, ਅਤੇ ਫੰਕਸ਼ਨ ਪੈਰਾਮੀਟਰਾਂ ਦੇ ਨਾਮ ਅਤੇ ਵੇਰਵੇ ਹੋਣਗੇ। ਫਿਰ ਅਸੀਂ ਇਸ ਸਕੀਮਾ ਨੂੰ ਉਸ ਕਲਾਇੰਟ ਨੂੰ ਭੇਜਾਂਗੇ ਜੋ ਪਹਿਲਾਂ ਬਣਾਇਆ ਗਿਆ ਸੀ, ਨਾਲ ਹੀ ਉਪਭੋਗਤਾ ਦੀ ਬੇਨਤੀ ਜਿਸ ਵਿੱਚ ਸੈਨ ਫ੍ਰਾਂਸਿਸਕੋ ਵਿੱਚ ਸਮਾਂ ਲੱਭਣਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਗੱਲ ਇਹ ਹੈ ਕਿ ਇੱਕ ਟੂਲ ਕਾਲ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਸਵਾਲ ਦਾ ਆਖਰੀ ਜਵਾਬ ਨਹੀਂ। ਜਿਵੇਂ ਪਹਿਲਾਂ ਕਿਹਾ ਗਿਆ ਕਿ LLM ਫੰਕਸ਼ਨ ਦਾ ਨਾਮ ਅਤੇ ਤਰਕ ਜੋ ਟਾਸਕ ਲਈ ਚੁਣੇ ਗਏ ਹਨ ਵਾਪਸ ਕਰਦਾ ਹੈ।
# ਮਾਡਲ ਲਈ ਫੰਕਸ਼ਨ ਦਾ ਵੇਰਵਾ ਪੜ੍ਹੋ
tools = [
{
"type": "function",
"function": {
"name": "get_current_time",
"description": "Get the current time in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city name, e.g. San Francisco",
},
},
"required": ["location"],
},
}
}
]
# ਸ਼ੁਰੂਆਤੀ ਯੂਜ਼ਰ ਸੁਨੇਹਾ
messages = [{"role": "user", "content": "What's the current time in San Francisco"}]
# ਪਹਿਲੀ ਏਪੀਆਈ ਕਾਲ: ਮਾਡਲ ਨੂੰ ਫੰਕਸ਼ਨ ਵਰਤਣ ਲਈ ਕਹੋ
response = client.chat.completions.create(
model=deployment_name,
messages=messages,
tools=tools,
tool_choice="auto",
)
# ਮਾਡਲ ਦੇ ਜਵਾਬ ਨੂੰ ਪ੍ਰਕਿਰਿਆ ਕਰੋ
response_message = response.choices[0].message
messages.append(response_message)
print("Model's response:")
print(response_message)
Model's response:
ChatCompletionMessage(content=None, role='assistant', function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_pOsKdUlqvdyttYB67MOj434b', function=Function(arguments='{"location":"San Francisco"}', name='get_current_time'), type='function')])
ਟਾਸਕ ਕਰਨ ਲਈ ਲੋੜੀਂਦਾ ਫੰਕਸ਼ਨ ਕੋਡ:
ਹੁਣ ਜਦੋਂ LLM ਨੇ ਚੁਣ लिया ਹੈ ਕਿ ਕਿਹੜਾ ਫੰਕਸ਼ਨ ਚਲਾਉਣਾ ਹੈ, ਕੰਮ ਕਰਨ ਵਾਲਾ ਕੋਡ ਲਾਗੂ ਕਰਨ ਅਤੇ ਚਲਾਉਣ ਦੀ ਲੋੜ ਹੈ। ਅਸੀਂ Python ਵਿੱਚ ਮੌਜੂਦਾ ਸਮਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੋਡ ਲਿਖਾਂਗੇ। ਨਾਲ ਹੀ ਸਾਨੂੰ ਰਿਸਪਾਂਸ_ਮੇਸੇਜ ਤੋਂ ਫੰਕਸ਼ਨ ਦਾ ਨਾਮ ਅਤੇ ਤਰਕ ਨਿਕਾਲਣ ਲਈ ਕੋਡ ਵੀ ਲਿਖਣਾ ਪਏਗਾ ਤਾ ਕਿ ਅੰਤਿਮ ਨਤੀਜਾ ਮਿਲ ਸਕੇ।
def get_current_time(location):
"""Get the current time for a given location"""
print(f"get_current_time called with location: {location}")
location_lower = location.lower()
for key, timezone in TIMEZONE_DATA.items():
if key in location_lower:
print(f"Timezone found for {key}")
current_time = datetime.now(ZoneInfo(timezone)).strftime("%I:%M %p")
return json.dumps({
"location": location,
"current_time": current_time
})
print(f"No timezone data found for {location_lower}")
return json.dumps({"location": location, "current_time": "unknown"})
# ਫੰਕਸ਼ਨ ਕਾਲਾਂ ਨੂੰ ਸੰਭਾਲੋ
if response_message.tool_calls:
for tool_call in response_message.tool_calls:
if tool_call.function.name == "get_current_time":
function_args = json.loads(tool_call.function.arguments)
time_response = get_current_time(
location=function_args.get("location")
)
messages.append({
"tool_call_id": tool_call.id,
"role": "tool",
"name": "get_current_time",
"content": time_response,
})
else:
print("No tool calls were made by the model.")
# ਦੂਜਾ API ਕਾਲ: ਮਾਡਲ ਤੋਂ ਅੰਤਿਮ ਜਵਾਬ ਪ੍ਰਾਪਤ ਕਰੋ
final_response = client.chat.completions.create(
model=deployment_name,
messages=messages,
)
return final_response.choices[0].message.content
get_current_time called with location: San Francisco
Timezone found for san francisco
The current time in San Francisco is 09:24 AM.
ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਜ਼ਿਆਦਾਤਰ, ਜੇ ਨਾ ਸਾਰੇ, ਏਜੰਟ ਟੂਲ ਯੂਜ਼ ਡਿਜ਼ਾਈਨ ਦਾ ਮੁੱਖ ਹਿੱਸਾ ਹੈ, ਪਰ ਇਸਨੂੰ ਸ਼ੁਰੂ ਤੋਂ ਲਾਗੂ ਕਰਨਾ ਕਈ ਵਾਰੀ ਚੁਣੌਤੀਪੂਰਨ ਹੋ ਸਕਦਾ ਹੈ। ਜਿਵੇਂ ਸਾਨੂੰ Lesson 2 ਵਿੱਚ ਸਿੱਖਿਆ ਕਿ ਏਜੰਟਿਕ ਫਰੇਮਵਰਕ ਪਹਿਲਾਂ ਤੋਂ ਬਣੇ ਇਮਾਰਤੀ ਇੰਨਣ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ ਟੂਲ ਯੂਜ਼ ਲਾਗੂ ਕਰਨ ਲਈ।
ਹੇਠਾਂ ਕੁਝ ਉਦਾਹਰਣ ਹਨ ਕਿ ਤੁਸੀਂ ਵੱਖ-ਵੱਖ ਏਜੰਟਿਕ ਫਰੇਮਵਰਕਾਂ ਨਾਲ ਕਿਸ ਤਰ੍ਹਾਂ ਟੂਲ ਯੂਜ਼ ਡਿਜ਼ਾਈਨ ਪੈਟਰਨ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ:
Microsoft Agent Framework ਇੱਕ ਖੁੱਲ੍ਹਾ-ਸਰੋਤ ਏਆਈ ਫਰੇਮਵਰਕ ਹੈ ਜੋ ਏਆਈ ਏਜੰਟ ਬਣਾਉਣ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਦਾ ਹੈ। ਇਹ ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਟੂਲਾਂ ਨੂੰ Python ਫੰਕਸ਼ਨਾਂ ਵਜੋਂ @tool ਡੈਕੋਰੇਟਰ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹੋ। ਫਰੇਮਵਰਕ ਮਾਡਲ ਅਤੇ ਤੁਹਾਡੇ ਕੋਡ ਦੇ ਵਿਚਕਾਰ ਆਤ-ਪ੍ਰਤਿ-ਆਤ ਸੰਚਾਰ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ। ਇਹ ਪਹਿਲਾਂ ਤੋਂ ਤਿਆਰ ਟੂਲਾਂ ਜਿਵੇਂ ਕਿ ਫਾਈਲ ਖੋਜ ਅਤੇ ਕੋਡ ਇੰਟਰਪ੍ਰੇਟਰ ਨੂੰ AzureAIProjectAgentProvider ਰਾਹੀਂ ਪਹੁੰਚ ਦਿੰਦਾ ਹੈ।
ਹੇਠਲਾ ਆਲੇਖ Microsoft Agent Framework ਨਾਲ ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਦੀ ਪ੍ਰਕਿਰਿਆ ਦਿਖਾਉਂਦਾ ਹੈ:

Microsoft Agent Framework ਵਿੱਚ, ਟੂਲਾਂ ਨੂੰ ਡੈਕੋਰੇਟ ਕੀਤੇ ਫੰਕਸ਼ਨਾਂ ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਅਸੀਂ ਪਿਛਲੇ get_current_time ਫੰਕਸ਼ਨ ਨੂੰ @tool ਡੈਕੋਰੇਟਰ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟੂਲ ਵਿੱਚ ਬਦਲ ਸਕਦੇ ਹਾਂ। ਫਰੇਮਵਰਕ ਆਪਣੇ ਆਪ ਫੰਕਸ਼ਨ ਅਤੇ ਇਸਦੇ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਸੀਰੀਅਲਾਈਜ਼ ਕਰਦਾ ਹੈ, ਅਤੇ LLM ਨੂੰ ਭੇਜਣ ਲਈ ਸਕੀਮਾ ਤਿਆਰ ਕਰਦਾ ਹੈ।
from agent_framework import tool
from agent_framework.azure import AzureAIProjectAgentProvider
from azure.identity import AzureCliCredential
@tool
def get_current_time(location: str) -> str:
"""Get the current time for a given location"""
...
# ਕਲਾਇੰਟ ਬਣਾਓ
provider = AzureAIProjectAgentProvider(credential=AzureCliCredential())
# ਇੱਕ ਏਜੰਟ ਬਣਾਓ ਅਤੇ ਟੂਲ ਨਾਲ ਚਲਾਓ
agent = await provider.create_agent(name="TimeAgent", instructions="Use available tools to answer questions.", tools=get_current_time)
response = await agent.run("What time is it?")
Azure AI Agent Service ਇੱਕ ਨਵਾਂ ਏਜੰਟਿਕ ਫਰੇਮਵਰਕ ਹੈ ਜੋ ਵਿਕਾਸਕਾਰਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਉੱਚ-ਗੁਣਵੱਤਾ ਵਾਲੇ, ਤਬਦੀਲ ਯੋਗ ਏਆਈ ਏਜੰਟਾਂ ਨੂੰ ਬਣਾਉਣ, ਤੈਨਾਤ ਕਰਨ ਅਤੇ ਮਾਪਣ ਵਿੱਚ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ ਬਿਨਾਂ ਬੁਨਿਆਦੀ ਕੰਪਿਊਟ ਅਤੇ ਸਟੋਰੇਜ ਸਰੋਤਾਂ ਨੂੰ ਸੰਭਾਲਣ ਦੀ ਲੋੜ ਦੇ। ਇਹ ਖਾਸ ਕਰਕੇ ਉਦਯੋਗਿਕ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਬਹੁਤ ਲਾਭਦਾਇਕ ਹੈ ਕਿਉਂਕਿ ਇਹ ਪੂਰੀ ਤਰ੍ਹਾਂ ਪ੍ਰਬੰਧਿਤ ਅਤੇ ਉਦਯੋਗ ਸਤਰ ਸੁਰੱਖਿਆ ਵਾਲੀ ਸੇਵਾ ਹੈ।
LLM ਏਪੀਆਈ ਨਾਲ ਸਿੱਧੀ ਤਰ੍ਹਾਂ ਵਿਕਾਸ ਕਰਨ ਨਾਲ ਤੁਲਨਾ ਵਿੱਚ, Azure AI Agent Service ਕੁਝ ਲਾਭ ਦਿੰਦਾ ਹੈ, ਜਿਵੇਂ:
Azure AI Agent Service ਵਿੱਚ ਉਪਲਬਧ ਟੂਲਾਂ ਨੂੰ ਦੋ ਵਰਗਾਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾ ਸਕਦਾ ਹੈ:
ਏਜੰਟ ਸਰਵਿਸ ਸਾਨੂੰ ਇਹਨਾਂ ਟੂਲਾਂ ਨੂੰ ਕੱਠੇ ਵਿੱਚ ਇੱਕ ਟੂਲਸੈੱਟ ਵਜੋਂ ਵਰਤਣ ਵਿੱਚ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਥ੍ਰੇਡਜ਼ ਦੀ ਵਰਤੋਂ ਵੀ ਕਰਦਾ ਹੈ ਜੋ ਕਿਸੇ ਖਾਸ ਗੱਲਬਾਤ ਦੇ ਮੈਸੇਜਾਂ ਦੇ ਇਤਿਹਾਸ ਨੂੰ ਟ੍ਰੈਕ ਕਰਦੇ ਹਨ।
ਕਲਪਨਾ ਕਰੋ ਤੁਸੀਂ Contoso ਨਾਮਕ ਕੰਪਨੀ ਵਿੱਚ ਇੱਕ ਵਿਕਰੀ ਏਜੰਟ ਹੋ। ਤੁਸੀਂ ਇੱਕ ਗੱਲਬਾਤੀ ਏਜੰਟ ਵਿਕਸਿਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਜੋ ਤੁਹਾਡੇ ਵਿਕਰੀ ਦੇ ਡਾਟੇ ਬਾਰੇ ਪ੍ਰਸ਼ਨਾਂ ਦੇ ਜਵਾਬ ਦੇ ਸਕੇ।
ਹੇਠਾਂ ਦੀ ਤਸਵੀਰ ਦਿਖਾਉਂਦੀ ਹੈ ਕਿ ਤੁਸੀਂ ਆਪਣਾ ਵਿਕਰੀ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਲਈ Azure AI Agent Service ਨੂੰ ਕਿਵੇਂ ਵਰਤ ਸਕਦੇ ਹੋ:

ਸੇਵਾ ਨਾਲ ਟੂਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਅਸੀਂ ਇੱਕ ਕਲਾਇੰਟ ਬਣਾਉਂਦੇ ਹਾਂ ਅਤੇ ਇੱਕ ਟੂਲ ਜਾਂ ਟੂਲਸੈੱਟ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੇ ਹਾਂ। ਇਸਨੂੰ ਪ੍ਰਯੋਗ ਵਿੱਚ ਲਿਆਉਣ ਲਈ ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤਾ Python ਕੋਡ ਵਰਤ ਸਕਦੇ ਹਾਂ। LLM ਟੂਲਸੈੱਟ ਵੇਖ ਕੇ ਫੈਸਲਾ ਕਰੇਗਾ ਕਿ ਉਪਭੋਗਤਾ ਦੁਆਰਾ ਬਣਾਏ ਗਏ ਫੰਕਸ਼ਨ fetch_sales_data_using_sqlite_query ਜਾਂ ਪਹਿਲਾਂ ਤੋਂ ਪ੍ਰਦਾਨ ਕੀਤਾ ਗਿਆ ਕੋਡ ਇੰਟਰਪ੍ਰੇਟਰ ਵਰਤੀ ਜਾਵੇ।
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from fetch_sales_data_functions import fetch_sales_data_using_sqlite_query # fetch_sales_data_using_sqlite_query ਫੰਕਸ਼ਨ ਜੋ fetch_sales_data_functions.py ਫਾਇਲ ਵਿੱਚ ਮਿਲ ਸਕਦਾ ਹੈ।
from azure.ai.projects.models import ToolSet, FunctionTool, CodeInterpreterTool
project_client = AIProjectClient.from_connection_string(
credential=DefaultAzureCredential(),
conn_str=os.environ["PROJECT_CONNECTION_STRING"],
)
# ਟੂਲਸੈੱਟ ਸ਼ੁਰੂ ਕਰੋ
toolset = ToolSet()
# ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਏਜੰਟ ਸ਼ੁਰੂ ਕਰੋ fetch_sales_data_using_sqlite_query ਫੰਕਸ਼ਨ ਨਾਲ ਅਤੇ ਇਸਨੂੰ ਟੂਲਸੈੱਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ
fetch_data_function = FunctionTool(fetch_sales_data_using_sqlite_query)
toolset.add(fetch_data_function)
# ਕੋਡ ਇੰਟਰਪ੍ਰਟਰ ਟੂਲ ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ ਇਸਨੂੰ ਟੂਲਸੈੱਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ।
code_interpreter = CodeInterpreterTool()toolset.add(code_interpreter)
agent = project_client.agents.create_agent(
model="gpt-4o-mini", name="my-agent", instructions="You are helpful agent",
toolset=toolset
)
LLM ਦੁਆਰਾ ਰਚਿਤ SQL ਨੂੰ ਲੈ ਕੇ ਇੱਕ ਅਕਸਰ ਚਿੰਤਾ ਸੁਰੱਖਿਆ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ, ਖਾਸ ਕਰਕੇ SQL ਇੰਜੈਕਸ਼ਨ ਜਾਂ ਨੁਕਸਾਨਦੇਹ ਕਾਰਵਾਈਆਂ ਦਾ ਖਤਰਾ, ਜਿਵੇਂ ਡਾਟਾਬੇਸ ਨੂੰ ਡ੍ਰਾਪ ਕਰਨਾ ਜਾਂ ਇਸ ਨੁਕਸਾਨ ਪਹੁੰਚਾਉਣਾ। ਜਦੋਂ ਕਿ ਇਹ ਚਿੰਤਾਵਾਂ ਵਾਜਬ ਹਨ, ਪਰ ਇਸਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਡਾਟਾਬੇਸ ਐਕਸੇਸ ਦੀਆਂ ਪਰਮਿਸ਼ਨਾਂ ਨੂੰ ਸੰਰਚਿਤ ਕਰਕੇ ਸਮਰੱਥਾਪੂਰਵਕ ਘਟਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਡਾਟਾਬੇਸਾਂ ਲਈ ਇਸਦਾ ਅਰਥ ਡਾਟਾਬੇਸ ਨੂੰ ਕੇਵਲ ਪੜ੍ਹਨ ਵਾਲਾ ਬਣਾਉਣਾ ਹੁੰਦਾ ਹੈ। PostgreSQL ਜਾਂ Azure SQL ਵਰਗੀਆਂ ਡਾਟਾਬੇਸ ਸੇਵਾਵਾਂ ਲਈ, ਐਪ ਨੂੰ ਪੜ੍ਹਨ-ਕੇਵਲ (SELECT) ਭੂਮਿਕਾ ਕੇਂਦ੍ਰਿਤ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।
ਐਪ ਨੂੰ ਸੁਰੱਖਿਅਤ ਮਾਹੌਲ ਵਿੱਚ ਚਲਾਉਣਾ ਸੁਰੱਖਿਆ ਨੂੰ ਹੋਰ ਵਧਾਉਂਦਾ ਹੈ। ਉਦਯੋਗਿਕ ਸਥਿਤੀਆਂ ਵਿੱਚ, ਡਾਟਾ ਅਕਸਰ ਚਲਾਉਣ ਵਾਲੀਆਂ ਪ੍ਰਣਾਲੀਆਂ ਤੋਂ ਕੱਢ ਕੇ ਪੜ੍ਹਨ-ਕੇਵਲ ਡਾਟਾਬੇਸ ਜਾਂ ਡਾਟਾ ਵੈਅਰਹਾਾਉਸ ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ ਜਿਸਦਾ ਸੌਖਾ ਸਕੀਮਾ ਹੁੰਦਾ ਹੈ। ਇਸ ਤਰੀਕੇ ਨਾਲ ਡਾਟਾ ਸੁਰੱਖਿਅਤ, ਪ੍ਰਦਰਸ਼ਨ ਤੋਂ ਸੁਧਾਰਿਆ ਹੋਇਆ ਅਤੇ ਪਹੁੰਚਯੋਗ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਐਪ ਦੀ ਪਹੁੰਚ ਸੀਮਿਤ ਅਤੇ ਪੜ੍ਹਨ-ਕੇਵਲ ਹੁੰਦੀ ਹੈ।
Microsoft Foundry Discord ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ ਤਾਂ ਜੋ ਹੋਰ ਸਿੱਖਣ ਵਾਲਿਆਂ ਨਾਲ ਮਿਲ ਸਕੋ, ਆਫਿਸ਼ੀਆਲ ਸਮੇਂ ਵਿੱਚ ਸ਼ਿਰਕਤ ਕਰ ਸਕੋ ਅਤੇ ਆਪਣੇ AI ਏਜੰਟਸ ਦੇ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਲੱਭ ਸਕੋ।
Agentic Design Patterns ਦੀ ਸਮਝ
ਅਸਵੀਕਾਰੋਪਣ: ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਅਨੁਵਾਦ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾਵਾਂ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮੱਤਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਰੂਰੀ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜਵਾਬਦੇਹ ਨਹੀਂ ਹਾਂ।