.NET使用Betalgo.OpenAI API无响应,请求技术支持
解决Betalgo.OpenAI API请求无响应问题
你的代码存在核心问题:RunForest方法使用async void,控制台程序中主线程调用该方法后不会等待异步操作完成,会直接退出,导致await openAiService.Completions.CreateCompletion(r)还未执行完毕程序就结束,所以你看不到任何返回结果。
修改后的代码如下:
static async Task Main(string[] args) { await RunForest(); } public static async Task RunForest() { var openAiService = new OpenAIService(new OpenAiOptions() { ApiKey = "sk-V72p9HoO5BmQaaa34IH1T3BlbkFJDroVJp5fX2g1NirGOf" }); CompletionCreateRequest r = new CompletionCreateRequest() { Prompt = "Once upon a time", Model = OpenAI.GPT3.ObjectModels.Models.TextDavinciV3 }; try { var completionResult = await openAiService.Completions.CreateCompletion(r); if (completionResult.Successful) { Console.WriteLine(completionResult.Choices.FirstOrDefault()?.Text); } else { if (completionResult.Error == null) { throw new Exception("Unknown Error"); } Console.WriteLine($"{completionResult.Error.Code}: {completionResult.Error.Message}"); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
关键修改点:
- 将
Main方法改为async Task Main(C# 7.1及以上版本支持),让主线程等待异步操作完成。 - 将
RunForest的返回类型从async void改为async Task,使其能被异步方法等待。 - 输出结果时添加
.Text,避免直接输出对象仅显示类型名称,无法看到实际返回文本。
内容的提问来源于stack exchange,提问作者bs_iao
相关产品推荐
相关产品推荐

