.net - 来自 .net API 的 OpenAI 调用

标签 .net .net-core openai-api

我正在尝试在我的 .net Core API 中复制我可以在 Postman 中进行的调用。在 Postman 中,我正在对以下对象执行 POST 调用:

https://api.openai.com/v1/completions

在正文中,我传递了以下内容:

{
    "model":"ada:dummy-2022-11-08-18-19-04",
    "prompt":"This is my test data on causes for illness ->",
    "max_tokens":6,
    "temperature":0
}

作为原始 JSON。

这会毫无问题地返回我的结果。显然我也在设置我的授权,我只是没有显示出来。在我的 .net 核心 api 中,我有以下代码:

async Task<string> getOpenAIData(OpenAISettings pSettings, string promptValue)
{
  var targetUrl = $"https://api.openai.com/V1/completions";

  OpenAIRequest reqBody = new OpenAIRequest();
  reqBody.model = pSettings.Model;
  reqBody.prompt = promptValue;
  reqBody.temprature = pSettings.Temprature;
  reqBody.max_tokens = pSettings.MaxTokens;

  using(HttpClient client = new HttpClient())
  {
    using(var request = new HttpRequestMessage(HttpMethod.Post, targetUrl))
    {
      request.Headers.TryAddWithoutValidation("Authorization", "Bearer my-secret-code");
      request.Content = JsonContent.Create(reqBody, new MediaTypeHeaderValue("application/json"));
      request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");

      var response = client.SendAsync(request).Result;
      var json = response.Content.ReadAsStringAsync().Result;
    }
  }
  return "";
} 

我知道还有更多要完成此功能,但现在我的响应状态始终是 404。我的 reqBody 对象看起来与我从 Postman 传递的对象相同。

读者可能会告诉我只使用其中一个包装器库,但它们都不允许您指定模型(据我所知),而且我已尝试对它们进行逆向工程,但无法使任何东西正常工作。有什么明显的东西我只是忽略了吗?

最佳答案

添加 try catch 如下:

        catch (WebException ex)
        {

            using (var stream = ex.Response.GetResponseStream())
            using (var reader = new StreamReader(stream))
            {
                string Fail404 = reader.ReadToEnd();
               
            }

            
        }

然后调试Fail404(任何调用的响应主体)

关于.net - 来自 .net API 的 OpenAI 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74697742/

相关文章:

c# - ImmutableList<T> 检查并删除

c# - 如何在单个应用程序中使用多个域? ASP.net core 3.0( Razor 页面, azure )

c# - .net core 2 API 中是否真的需要 services.AddSingleton<IConfiguration>

python - 如何生成超出最大 token 限制的 gpt-3 补全

c# - Caliburn micro 将 message.attach 指向所需的 View 模型

c# - 在 WPF 自定义控件上多次应用 DropShadowEffect

c# - 我只有 Tibco.EMS.dll,我还需要什么?

c# - 通过 Net Core 将 C++ 数组传递到 C# 层

search - Openai 语义搜索不适用于文件参数

python-3.x - chatgpt-api 和 Web 界面的不同答案