OpenAI Azure 端点是否支持 gpt-4-32k?

您好,

我在使用 OpenAI Azure 端点时遇到问题。对于以下 URL,它似乎无法按预期工作:

https://***.openai.azure.com/openai/deployments/DEPLOYMENT_NAME/chat/completions?api-version=2023-07-01-preview

其中 DEPLOYMENT_NAME 设置为 gpt-4-32k

您能否协助解决此问题?任何指导或建议都将不胜感激。

此外,我有一些关于 Discourse 插件的疑问:

  1. 如何 Fork Discourse 插件:您能否提供有关如何 Fork 现有 Discourse 插件的详细说明或指南?
  2. 测试 Forked 插件:一旦我 Fork 了插件,在我的 Discourse 实例上测试这个 Forked 版本有哪些步骤?
  3. 上传和激活插件:测试后,我该如何在我的 Discourse 实例上上传和激活这个 Forked 插件?

您对这些疑问的协助将非常有帮助。感谢您的时间和支持。

此致,

您是否在设置 ai openai gpt4 32k url 中进行了设置?

是的,我做到了,但问题似乎是 lib/summarization/entry_point.rb 文件中的 gpt-4-32k-2023-07-01-preview 完全没有被处理。

module DiscourseAi
  module Summarization
    class EntryPoint
      def inject_into(plugin)
        foldable_models = [
          Models::OpenAi.new("gpt-4", max_tokens: 8192),
          Models::OpenAi.new("gpt-4-32k", max_tokens: 32_768),
          Models::OpenAi.new("gpt-4-1106-preview", max_tokens: 100_000),
          Models::OpenAi.new("gpt-3.5-turbo", max_tokens: 4096),
          Models::OpenAi.new("gpt-3.5-turbo-16k", max_tokens: 16_384),
          Models::Anthropic.new("claude-2", max_tokens: 200_000),
          Models::Anthropic.new("claude-instant-1", max_tokens: 100_000),
          Models::Llama2.new("Llama2-chat-hf", max_tokens: SiteSetting.ai_hugging_face_token_limit),
          Models::Llama2FineTunedOrcaStyle.new(
            "StableBeluga2",
            max_tokens: SiteSetting.ai_hugging_face_token_limit,
          ),
          Models::Gemini.new("gemini-pro", max_tokens: 32_768),
          Models::Mixtral.new("mistralai/Mixtral-8x7B-Instruct-v0.1", max_tokens: 32_000),
        ]

        foldable_models.each do |model|
          plugin.register_summarization_strategy(Strategies::FoldContent.new(model))
        end

        truncable_models = [
          Models::Discourse.new("long-t5-tglobal-base-16384-book-summary", max_tokens: 16_384),
          Models::Discourse.new("bart-large-cnn-samsum", max_tokens: 1024),
          Models::Discourse.new("flan-t5-base-samsum", max_tokens: 512),
        ]

        truncable_models.each do |model|
          plugin.register_summarization_strategy(Strategies::TruncateContent.new(model))
        end
      end
    end
  end
end

我们在日志中可以看到此错误:

DiscourseAi::Completions::Endpoints::OpenAi: status: 400 - body: {
  "error": {
    "message": "Unrecognized request argument supplied: tools",
    "type": "invalid_request_error",
    "param": null,
    "code": null
  }
}


 
使用提示准备的 payload:[{:role=>"system", :content=>"You are a helpful Discourse assistant.\nYou _understand_ and **generate** Discourse Markdown.\nYou live in a Discourse Forum Message.\n\nYou live in the forum with the URL: https://<URL>\nThe title of your site: Discourse\nThe description is: \nThe participants in this conversation are: gpt4_bot, Chris\nThe date now is: 2024-01-19 10:10:05 UTC, much has changed since you were trained.\n\nYou were trained on OLD data, lean on search to get up to date information about this forum\nWhen searching try to SIMPLIFY search terms\nDiscourse search joins all terms with AND. Reduce and simplify terms to find more results."}, {:role=>"user", :content=>"comment faire une boucle en dart ?", :name=>"Chris"}], model_params: {}, dialect: #<DiscourseAi::Completions::Dialects::ChatGpt:0x00007f230513e6e0>

哦,我明白了,这意味着您需要一个支持工具的更新端点。Azure 可以处理,因为我们在内部使用它。

1 个赞

不,我不认为这是 Microsoft Azure 的特殊性,我在纯 JavaScript 中测试了请求,它运行正常,没有任何“工具”的概念。在这里,我感觉是插件的问题(我声明我不是 Ruby 开发者),但似乎使用的抽象层使事情变得复杂。出于怀疑,我们 fork 了该插件并在所有地方放置了调试器,发送到 Azure 的 URL 和标头 100% 合规。

DiscourseAi::Completions::Endpoints::OpenAi: status: 400 - body: { “error”: { “message”: “Unrecognized request argument supplied: tools”, “type”: “invalid_request_error”, “param”: null, “code”: null } }

似乎我们唯一调用“tools”的地方在 ./lib/completions/endpoints/open_ai.rb (DiscourseAi::Completions::Endpoints::OpenAi) 中是:

    def prepare_payload(prompt, model_params, dialect)
      Rails.logger.warn("Preparing payload with prompt: #{prompt}, model_params: #{model_params}, dialect: #{dialect}")
      default_options
        .merge(model_params)
        .merge(messages: prompt)
        .tap do |payload|
          payload[:stream] = true if @streaming_mode
          payload[:tools] = dialect.tools if dialect.tools.present?
        end
    end

这似乎会引导我们到 ./lib/completions/dialects/chat_gpt.rb (payload[:tools] = dialect.tools if dialect.tools.present?)

在 PEYRUSSE Christian 的消息中,我们意识到“dialect”是“dialect: #DiscourseAi::Completions::Dialects::ChatGpt:0x00007f230513e6e0

如果这有帮助的话……

谢谢。

只要您使用的是最新的终结点,就不是。

我们在此网站上使用 Azure 终结点,但参数为 api-version=2023-12-01-preview。您能否尝试使用具有该 API 版本的终结点?

我们将在下周进行检查并告知您,此致。

您好,

今天早上我更新了 Discourse AI 插件,现在可以正常工作了……太棒了,感谢您的帮助。

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.