Skip to content

Commit b9b2bfb

Browse files
authored
Merge pull request #3 from aahill/patch-13
Update azure-functions-samples.md
2 parents a5371c5 + d8745f3 commit b9b2bfb

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

articles/ai-services/agents/how-to/tools/azure-functions-samples.md

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ For any issues with the TypeScript code, create an issue on the [sample code rep
306306
## Using the .NET SDK
307307

308308
### Prerequisites
309-
To make a function call we need to create and deploy the Azure function. In the code snippet below, we have an example of function on C# which can be used by the code above.
309+
To make a function call, we need to create and deploy the Azure function. In the code snippet, we have an example of function on C# which can be used by the earlier code.
310310

311311
```csharp
312312
namespace FunctionProj
@@ -358,19 +358,19 @@ To make a function call we need to create and deploy the Azure function. In the
358358
}
359359
```
360360

361-
In this code we define function input and output class: `Arguments` and `Response` respectively. These two data classes will be serialized in JSON. It is important that these both contain field `CorrelationId`, which is the same between input and output.
361+
In this code we define function input and output class: `Arguments` and `Response` respectively. These two data classes are serialized in JSON. It's important that these both contain the `CorrelationId`, which is the same between input and output.
362362

363-
In our example the function will be stored in the storage account, created with the AI hub. For that we need to allow key access to that storage. In Azure portal go to Storage account > Settings > Configuration and set "Allow storage account key access" to Enabled. If it is not done, the error will be displayed "The remote server returned an error: (403) Forbidden." To create the function resource that will host our function, install azure-cli python package and run the next command:
363+
In our example the function is stored in the storage account, created with the AI hub. For that we need to allow key access to that storage. In the Azure portal, go to Storage account > Settings > Configuration and set "Allow storage account key access" to Enabled. If it isn't done, the error that is displayed is "The remote server returned an error: (403) Forbidden." To create the function resource that will host our function, install azure-cli python package and run the next command:
364364

365365
```shell
366366
pip install -U azure-cli
367367
az login
368368
az functionapp create --resource-group your-resource-group --consumption-plan-location region --runtime dotnet-isolated --functions-version 4 --name function_name --storage-account storage_account_already_present_in_resource_group --app-insights existing_or_new_application_insights_name
369369
```
370370

371-
This function writes data to the output queue and hence needs to be authenticated to Azure, so we will need to assign the function system identity and provide it `Storage Queue Data Contributor`. To do that in Azure portal select the function, located in `your-resource-group` resource group and in Settings>Identity, switch it on and click Save. After that assign the `Storage Queue Data Contributor` permission on storage account used by our function (storage_account_already_present_in_resource_group in the script above) for just assigned System Managed identity.
371+
This function writes data to the output queue and hence needs to be authenticated to Azure, so we'll need to assign the function system identity and provide it `Storage Queue Data Contributor`. To do that in Azure portal, select the function, located in `your-resource-group` resource group and in Settings > Identity, switch it on and select Save. After that assign the `Storage Queue Data Contributor` permission on storage account used by our function (`storage_account_already_present_in_resource_group` in the script above) for the assigned system managed identity.
372372

373-
Now we will create the function itself. Install [.NET](https://dotnet.microsoft.com/download) and [Core Tools](https://go.microsoft.com/fwlink/?linkid=2174087) and create the function project using next commands.
373+
Now we'll create the function itself. Install [.NET](https://dotnet.microsoft.com/download) and [Core Tools](https://go.microsoft.com/fwlink/?linkid=2174087) and create the function project using next commands.
374374

375375
```shell
376376
func init FunctionProj --worker-runtime dotnet-isolated --target-framework net8.0
@@ -380,15 +380,16 @@ Now we will create the function itself. Install [.NET](https://dotnet.microsoft.
380380
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues --prerelease
381381
```
382382

383-
**Note:** There is a "Azure Queue Storage trigger", however the attempt to use it results in error for now.
384-
We have created a project, containing HTTP-triggered azure function with the logic in `Foo.cs` file. As far as we need to trigger Azure function by a new message in the queue, we will replace the content of a Foo.cs by the C# sample code above.
385-
To deploy the function run the command from dotnet project folder:
383+
> [!NOTE]
384+
> There's an "Azure Queue Storage trigger," however the attempt to use it results in error for now.
385+
We have created a project, containing HTTP-triggered Azure function with the logic in `Foo.cs` file. As far as we need to trigger Azure function by a new message in the queue, we replace the content of a Foo.cs by the C# sample code above.
386+
To deploy the function, run the command from dotnet project folder:
386387

387388
```shell
388-
func azure functionapp publish function_name
389+
func azure functionapp publish function_name
389390
```
390391

391-
In the `storage_account_already_present_in_resource_group` select the `Queue service` and create two queues: `azure-function-foo-input` and `azure-function-tool-output`. Note that the same queues are used in our sample. To check that the function is working, place the next message into the `azure-function-foo-input` and replace `storage_account_already_present_in_resource_group` by the actual resource group name, or just copy the output queue address.
392+
In the `storage_account_already_present_in_resource_group` select the `Queue service` and create two queues: `azure-function-foo-input` and `azure-function-tool-output`. The same queues are used in our sample. To check that the function is working, place the next message into the `azure-function-foo-input` and replace `storage_account_already_present_in_resource_group` by the actual resource group name, or just copy the output queue address.
392393

393394
```json
394395
{
@@ -397,19 +398,21 @@ In the `storage_account_already_present_in_resource_group` select the `Queue ser
397398
}
398399
```
399400

400-
Next, we will monitor the output queue or the message. You should receive the next message.
401+
Next, we monitor the output queue or the message. You should receive the next message.
401402

402403
```json
403404
{
404405
"Value": "Bar",
405406
"CorrelationId": "42"
406407
}
407408
```
408-
Please note that the input `CorrelationId` is the same as output.
409-
*Hint:* Place multiple messages to input queue and keep second internet browser window with the output queue open and hit the refresh button on the portal user interface, so that you will not miss the message. If the message instead went to `azure-function-foo-input-poison` queue, the function completed with error, please check your setup.
410-
After we have tested the function and made sure it works, please make sure that the Azure AI Project have the next roles for the storage account: `Storage Account Contributor`, `Storage Blob Data Contributor`, `Storage File Data Privileged Contributor`, `Storage Queue Data Contributor` and `Storage Table Data Contributor`. Now the function is ready to be used by the agent.
409+
The input `CorrelationId` is the same as output.
411410

412-
In the example below we are calling function "foo", which responds "Bar".
411+
> [!TIP]
412+
> Place multiple messages to input queue and keep second internet browser window with the output queue open and hit the refresh button on the portal user interface, so that you won't miss the message. If the message instead went to `azure-function-foo-input-poison` queue, the function completed with error, check your setup.
413+
After testing the function and made sure it works, make sure that the Azure AI Project has the following roles for the storage account: `Storage Account Contributor`, `Storage Blob Data Contributor`, `Storage File Data Privileged Contributor`, `Storage Queue Data Contributor` and `Storage Table Data Contributor`. Now the function is ready to be used by the agent.
414+
415+
In the example below we're calling function "foo," which responds "Bar."
413416

414417
### .NET Sample Code
415418

@@ -537,4 +540,3 @@ In the example below we are calling function "foo", which responds "Bar".
537540
```
538541

539542
::: zone-end
540-

0 commit comments

Comments
 (0)