Soporte de endpoint de Azure de OpenAI para gpt-4-32k?

Hola,

Estoy encontrando un problema con el endpoint de OpenAI Azure. Parece que no está funcionando como se esperaba para la siguiente URL:

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

Donde DEPLOYMENT_NAME está configurado como gpt-4-32k.

¿Podrían ayudarme a resolver este problema? Cualquier orientación o sugerencia sería muy apreciada.

Además, tengo algunas preguntas sobre los plugins de Discourse:

  1. Cómo hacer un Fork de un Plugin de Discourse: ¿Podrían proporcionar instrucciones detalladas o una guía sobre cómo hacer un fork de un plugin de Discourse existente?
  2. Probar el Plugin con Fork: Una vez que haya hecho un fork de un plugin, ¿cuáles son los pasos para probar esta versión con fork en mi propia instancia de Discourse?
  3. Subir y Activar el Plugin: Después de probarlo, ¿cómo puedo subir y activar este plugin con fork en mi instancia de Discourse?

Su ayuda con estas preguntas sería extremadamente útil. Gracias por su tiempo y apoyo.

Saludos cordiales,

¿Lo configuraste en el ajuste ai openai gpt4 32k url?

Sí, lo hice, pero el problema parece ser que en el archivo lib/summarization/entry_point.rb el gpt-4-32k-2023-07-01-preview no se maneja en absoluto.

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

Podemos ver este error en los registros:

DiscourseAi::Completions::Endpoints::OpenAi: status: 400 - body: {
  "error": {
    "message": "Se suministró un argumento de solicitud no reconocido: tools",
    "type": "invalid_request_error",
    "param": null,
    "code": null
  }
}


Preparando el payload con prompt: [{:role=>"system", :content=>"Eres un asistente útil de Discourse.\nEntiendes y generas Discourse Markdown.\nVives en un mensaje del foro de Discourse.\n\nVives en el foro con la URL: https://<URL>\nEl título de tu sitio: Discourse\nLa descripción es: \nLos participantes en esta conversación son: gpt4_bot, Chris\nLa fecha actual es: 2024-01-19 10:10:05 UTC, mucho ha cambiado desde que fuiste entrenado.\n\nFuiste entrenado con datos ANTIGUOS, confía en la búsqueda para obtener información actualizada sobre este foro.\nAl buscar, intenta SIMPLIFICAR los términos de búsqueda.\nLa búsqueda de Discourse une todos los términos con Y. Reduce y simplifica los términos para encontrar más resultados."}, {:role=>"user", :content=>"comment faire une boucle en dart ?", :name=>"Chris"}], model_params: {}, dialect: #<DiscourseAi::Completions::Dialects::ChatGpt:0x00007f230513e6e0>

Ah, ya veo, eso significa que necesitas un endpoint actualizado con soporte para herramientas. Azure puede manejarlo, ya que lo estamos utilizando internamente.

1 me gusta

No, no creo que sea una especificidad de Microsoft Azure, he probado las solicitudes en JavaScript puro y funciona sin ningún problema, sin ninguna noción de “herramientas”. Aquí, tengo la impresión de que es un problema con el plugin (especifico que no soy un desarrollador de Ruby) pero parece que la capa de abstracción utilizada complica las cosas. En duda, hemos bifurcado ese plugin y puesto depuradores en todas partes, la URL, las cabeceras que van a Azure cumplen al 100%.

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

Parece que el único lugar donde llamamos a “tools” en ./lib/completions/endpoints/open_ai.rb (DiscourseAi::Completions::Endpoints::OpenAi) es:

    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

que parece llevarnos a ./lib/completions/dialects/chat_gpt.rb (payload[:tools] = dialect.tools if dialect.tools.present?)

En el mensaje de PEYRUSSE Christian, nos damos cuenta de que el “dialecto” es “dialect: #DiscourseAi::Completions::Dialects::ChatGpt:0x00007f230513e6e0

Si eso puede ayudar…

Gracias.

No lo es, siempre que estés utilizando un endpoint actualizado.

Estamos utilizando endpoints de Azure en este sitio, pero con el parámetro api-version=2023-12-01-preview. ¿Puedes intentar usar un endpoint con esa versión de API?

Lo revisaremos y te informaremos la próxima semana, saludos.

Hola,

Esta mañana he actualizado los plugins Discourse AI y ahora funciona… genial, gracias por tu ayuda.

2 Me gusta

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