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_NAMEgpt-4-32k に設定されています。

この問題の解決にご協力いただけますでしょうか?ガイダンスや提案をいただけると幸いです。

また、Discourse プラグインに関していくつか質問があります。

  1. Discourse プラグインのフォーク方法: 既存の Discourse プラグインをフォークする方法について、詳細な手順またはガイドを提供していただけますか?
  2. フォークしたプラグインのテスト: プラグインをフォークした後、このフォークしたバージョンを自分の Discourse インスタンスでテストする手順は何ですか?
  3. プラグインのアップロードと有効化: テスト後、このフォークしたプラグインを Discourse インスタンスにアップロードして有効化するにはどうすればよいですか?

これらの質問についてご協力いただけると大変助かります。お時間とサポートをいただきありがとうございます。

よろしくお願いいたします。

設定 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
  }
}


プロンプトを使用したペイロードの準備: [{:role=>"system", :content=>"あなたは役立つDiscourseアシスタントです。\nDiscourse Markdownを理解し、生成します。\nあなたはDiscourseフォーラムメッセージ内にいます。\n\nあなたは以下のURLのフォーラムにいます: https://<URL>\nサイトのタイトル: Discourse\n説明: \nこの会話の参加者は: gpt4_bot, Chris\n現在の日付: 2024-01-19 10:10:05 UTC。トレーニングから多くのことが変更されました。\n\n古いデータでトレーニングされたため、検索に頼ってこのフォーラムの最新情報を入手してください。\n検索する際は、検索用語を単純化してください。\nDiscourseの検索では、すべての用語がANDで結合されます。より多くの結果を見つけるために、用語を減らして単純化してください。"}, {:role=>"user", :content=>"dartでループを作成するにはどうすればよいですか?", :name=>"Chris"}], model_params: {}, dialect: #<DiscourseAi::Completions::Dialects::ChatGpt:0x00007f230513e6e0>

ああ、わかりました。つまり、ツールをサポートする更新されたエンドポイントが必要ということですね。Azureは内部で使用しているので、対応できます。

「いいね!」 1

いいえ、Microsoft Azure の特殊性だとは思いません。純粋な JavaScript でリクエストをテストしましたが、問題なく動作しました。「ツール」という概念はありませんでした。ここでは、プラグインの問題のように思われます(私は Ruby 開発者ではありませんが)。使用されている抽象化レイヤーが物事をより複雑にしているようです。念のため、そのプラグインをフォークして、すべてのデバッガーを配置しました。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 } }

「ツール」を呼び出している唯一の場所は、次のとおりのようです。./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バージョンでエンドポイントを試していただけますか?

We check this out and let you know surely next week, regards.

こんにちは。

今朝、Discourse AI プラグインを更新したところ、動作するようになりました。素晴らしいです。ご協力ありがとうございました。

「いいね!」 2

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