Supporto endpoint OpenAI Azure per gpt-4-32k?

Ciao,

Sto riscontrando un problema con l’endpoint OpenAI Azure. Sembra non funzionare come previsto per il seguente URL:

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

Dove DEPLOYMENT_NAME è impostato su gpt-4-32k.

Potresti aiutarmi a risolvere questo problema? Qualsiasi indicazione o suggerimento sarebbe molto apprezzato.

Inoltre, ho alcune domande sui plugin di Discourse:

  1. Come fare il Fork di un Plugin Discourse: Potresti fornire istruzioni dettagliate o una guida su come fare il fork di un plugin Discourse esistente?
  2. Testare il Plugin Forkato: Una volta che ho fatto il fork di un plugin, quali sono i passaggi per testare questa versione forkata sulla mia istanza Discourse?
  3. Caricare e Attivare il Plugin: Dopo il test, come posso caricare e attivare questo plugin forkato sulla mia istanza Discourse?

La tua assistenza con queste domande sarebbe estremamente utile. Grazie per il tuo tempo e supporto.

Cordiali saluti,

L’hai impostato nell’impostazione ai openai gpt4 32k url?

Sì, l’ho fatto, ma il problema sembra essere che nel file lib/summarization/entry_point.rb il gpt-4-32k-2023-07-01-preview non viene gestito affatto.

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

Possiamo vedere questo errore nei log:

DiscourseAi::Completions::OpenAi::Endpoints: stato: 400 - corpo: {
  "error": {
    "message": "Argomento della richiesta non riconosciuto fornito: tools",
    "type": "invalid_request_error",
    "param": null,
    "code": null
  }
}


Preparazione del payload con prompt: [{:role=>"system", :content=>"Sei un utile assistente Discourse.\nComprendi e generi Markdown Discourse.\nVivi in un messaggio del forum Discourse.\n\nVivi nel forum con l'URL: https://<URL>\nIl titolo del tuo sito: Discourse\nLa descrizione è:\nI partecipanti a questa conversazione sono: gpt4_bot, Chris\nLa data attuale è: 2024-01-19 10:10:05 UTC, molto è cambiato da quando sei stato addestrato.\n\nSei stato addestrato su vecchi dati, affidati alla ricerca per ottenere informazioni aggiornate su questo forum\nQuando cerchi, prova a SEMPLIFICARE i termini di ricerca\nLa ricerca di Discourse unisce tutti i termini con AND. Riduci e semplifica i termini per trovare più risultati."}, {:role=>"user", :content=>"come fare un ciclo in dart?", :name=>"Chris"}], model_params: {}, dialect: #<DiscourseAi::Completions::Dialects::ChatGpt:0x00007f230513e6e0>

Ah, capisco, ciò significa che è necessario un endpoint aggiornato con il supporto degli strumenti. Azure può gestirlo, poiché lo utilizziamo internamente.

1 Mi Piace

No, non credo sia una specificità di Microsoft Azure, ho testato le richieste in puro JavaScript e funziona senza problemi, senza alcuna nozione di “strumenti”. Qui, ho l’impressione che sia un problema con il plugin (specifico che non sono uno sviluppatore Ruby) ma sembra che lo strato di astrazione utilizzato complichi le cose. Nel dubbio, abbiamo fatto un fork di quel plugin e messo debugger ovunque, l’URL, gli header che vanno ad Azure sono conformi al 100%.

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

Sembra che l’unico posto in cui chiamiamo “tools” in ./lib/completions/endpoints/open_ai.rb (DiscourseAi::Completions::Endpoints::OpenAi) sia:

    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

che sembra portarci a ./lib/completions/dialects/chat_gpt.rb (payload[:tools] = dialect.tools if dialect.tools.present?)

Nel messaggio di PEYRUSSE Christian, ci rendiamo conto che il “dialect” è “dialect: #DiscourseAi::Completions::Dialects::ChatGpt:0x00007f230513e6e0

Se può essere d’aiuto…

Grazie.

Non lo è, purché si utilizzi un endpoint aggiornato.

Utilizziamo endpoint Azure su questo sito, ma con il parametro api-version=2023-12-01-preview. Riesci a provare a utilizzare un endpoint con quella versione dell’API?

Lo controlleremo e ti faremo sapere sicuramente la prossima settimana, cordiali saluti.

Ciao,

Stamattina ho aggiornato i plugin Discourse AI e ora funziona… è fantastico grazie per il tuo aiuto.

2 Mi Piace

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