Support du point de terminaison Azure OpenAI pour gpt-4-32k ?

Bonjour,

Je rencontre un problème avec le point de terminaison OpenAI Azure. Il semble ne pas fonctionner comme prévu pour l’URL suivante :

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

DEPLOYMENT_NAME est défini sur gpt-4-32k.

Pourriez-vous m’aider à résoudre ce problème ? Toute aide ou suggestion serait grandement appréciée.

De plus, j’ai quelques questions concernant les plugins Discourse :

  1. Comment forker un plugin Discourse : Pourriez-vous fournir des instructions détaillées ou un guide sur la manière de forker un plugin Discourse existant ?
  2. Tester le plugin forké : Une fois que j’ai forké un plugin, quelles sont les étapes pour tester cette version forkée sur ma propre instance Discourse ?
  3. Télécharger et activer le plugin : Après les tests, comment puis-je télécharger et activer ce plugin forké sur mon instance Discourse ?

Votre aide pour ces questions serait extrêmement utile. Merci de votre temps et de votre soutien.

Cordialement,

L’avez-vous défini dans le paramètre ai openai gpt4 32k url ?

Oui, je l’ai fait, mais le problème semble être que dans le fichier lib/summarization/entry_point.rb, le gpt-4-32k-2023-07-01-preview n’est pas du tout géré.

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

Nous pouvons voir cette erreur dans les logs :

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


 Préparation du payload avec prompt: [{: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>

Ah, je vois, cela signifie que vous avez besoin d’un point de terminaison mis à jour avec la prise en charge des outils. Azure peut le gérer, car nous l’utilisons en interne.

1 « J'aime »

Non, je ne pense pas que ce soit une spécificité de Microsoft Azure, j’ai testé les requêtes en JavaScript pur et cela fonctionne sans aucun problème, sans aucune notion de « tools ». Là, j’ai l’impression que c’est un problème avec le plugin (je précise que je ne suis pas développeur Ruby) mais il semble que la couche d’abstraction utilisée complique les choses. Dans le doute, nous avons forké ce plugin et mis des debuggers partout, l’URL, les headers qui vont vers Azure sont conformes à 100 %.

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

Il semble que le seul endroit où l’on appelle un « tools » dans ./lib/completions/endpoints/open_ai.rb (DiscourseAi::Completions::Endpoints::OpenAi) est :

    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

ce qui semble nous mener vers ./lib/completions/dialects/chat_gpt.rb (payload[:tools] = dialect.tools if dialect.tools.present?)

Dans le message de PEYRUSSE Christian, on se rend compte que le « dialect » est « dialect: #DiscourseAi::Completions::Dialects::ChatGpt:0x00007f230513e6e0 »

Si cela peut aider…

Merci.

Ce n’est pas le cas, tant que vous utilisez un point de terminaison à jour.

Nous utilisons des points de terminaison Azure sur ce site, mais avec le paramètre api-version=2023-12-01-preview. Pouvez-vous essayer d’utiliser un point de terminaison avec cette version d’API ?

Nous vérifions cela et vous tenons au courant la semaine prochaine, cordialement.

Bonjour,

Ce matin, j’ai mis à jour les plugins Discourse AI et cela fonctionne maintenant… c’est super, merci pour votre aide.

2 « J'aime »

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