如何在.NET(C#)中实现Python等效的Bedrock Agent调用逻辑
实现与Python等效的AWS Bedrock Agent调用逻辑(C#)
以下是修改后的C#代码,实现与你提供的Python代码完全一致的逻辑,返回completion文本和traces列表:
using Amazon.BedrockAgentRuntime; using Amazon.BedrockAgentRuntime.Model; using System.Collections.Generic; using System.Text; public static async Task<(string Completion, List<string> Traces)> InvokeBedrockAgentAsync(string prompt) { var completion = new StringBuilder(); var traces = new List<string>(); using var client = new AmazonBedrockAgentRuntimeClient(RegionEndpoint.USEast1); try { var response = await client.InvokeAgentAsync(new InvokeAgentRequest { AgentId = "******", AgentAliasId = "****", SessionId = Guid.NewGuid().ToString(), InputText = prompt }); if (response.HttpStatusCode == System.Net.HttpStatusCode.OK) { foreach (var completionEvent in response.CompletionEvents) { try { // 处理追踪事件 if (completionEvent.Trace != null) { traces.Add(completionEvent.Trace.TraceContent); } // 处理内容分片 else if (completionEvent.Chunk != null) { var chunkText = Encoding.UTF8.GetString(completionEvent.Chunk.Bytes); completion.Append(chunkText); } } catch (Exception ex) { Console.WriteLine($"处理事件时出错: {ex.Message}"); } } } else { Console.WriteLine($"InvokeAgentAsync 调用失败,状态码: {response.HttpStatusCode}"); } } catch (AmazonServiceException ex) { Console.WriteLine($"AWS服务调用异常: {ex.Message}"); } return (completion.ToString(), traces); }
关键逻辑说明
- 返回类型调整:将方法返回类型改为
Task<(string Completion, List<string> Traces)>,同时返回完成文本和追踪信息列表 - 事件遍历:
response.CompletionEvents对应Python代码中response.get("completion")的迭代结果,逐个处理每个事件 - 事件区分:
- 若事件包含
Trace属性,则提取TraceContent(对应Python里的trace['trace'])添加到追踪列表 - 若事件包含
Chunk属性,则将字节数组解码为UTF-8字符串,拼接至完成文本
- 若事件包含
- 异常处理:捕获AWS服务调用异常(
AmazonServiceException)以及单个事件处理时的异常,避免程序崩溃
内容的提问来源于stack exchange,提问作者Swapnil Cheerla
相关产品推荐
相关产品推荐

