Suporte de endpoint Azure da OpenAI para gpt-4-32k?

Olá,

Estou encontrando um problema com o endpoint OpenAI Azure. Parece que ele não está funcionando como esperado para a seguinte URL:

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

Onde DEPLOYMENT_NAME está definido como gpt-4-32k.

Você poderia, por favor, ajudar a resolver este problema? Qualquer orientação ou sugestão seria muito apreciada.

Além disso, tenho algumas dúvidas sobre plugins do Discourse:

  1. Como fazer um Fork de um Plugin do Discourse: Você poderia fornecer instruções detalhadas ou um guia sobre como fazer um fork de um plugin existente do Discourse?
  2. Testando o Plugin com Fork: Depois de fazer o fork de um plugin, quais são os passos para testar essa versão com fork na minha própria instância do Discourse?
  3. Enviando e Ativando o Plugin: Após o teste, como posso enviar e ativar este plugin com fork na minha instância do Discourse?

Sua assistência com estas questões seria extremamente útil. Obrigado pelo seu tempo e apoio.

Atenciosamente,

Você definiu isso na configuração ai openai gpt4 32k url?

Sim, eu fiz, mas o problema parece ser que no arquivo lib/summarization/entry_point.rb o gpt-4-32k-2023-07-01-preview não é tratado.

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 erro nos logs:

DiscourseAi::Completions::Endpoints::OpenAi: status: 400 - body: {
  "error": {
    "message": "Argumento de solicitação não reconhecido fornecido: tools",
    "type": "invalid_request_error",
    "param": null,
    "code": null
  }
}


Préparation du payload avec prompt: [{:role=>"system", :content=>"Você é um assistente útil do Discourse.\nVocê _entende_ e **gera** Markdown do Discourse.\nVocê vive em uma Mensagem de Fórum do Discourse.\n\nVocê vive no fórum com a URL: https://<URL>\nO título do seu site: Discourse\nA descrição é: \nOs participantes nesta conversa são: gpt4_bot, Chris\nA data de hoje é: 2024-01-19 10:10:05 UTC, muita coisa mudou desde que você foi treinado.\n\nVocê foi treinado com dados ANTIGOS, confie na pesquisa para obter informações atualizadas sobre este fórum\nAo pesquisar, tente SIMPLIFICAR os termos de pesquisa\nA pesquisa do Discourse une todos os termos com E. Reduza e simplifique os termos para encontrar mais resultados."}, {:role=>"user", :content=>"comment faire une boucle en dart ?", :name=>"Chris"}], model_params: {}, dialect: #<DiscourseAi::Completions::Dialects::ChatGpt:0x00007f230513e6e0>

Ah, entendi, isso significa que você precisa de um endpoint atualizado com suporte a ferramentas. O Azure pode lidar com isso, pois o usamos internamente.

1 curtida

Não, não acho que seja uma especificidade do Microsoft Azure, testei as requisições em JavaScript puro e funciona sem problemas, sem nenhuma noção de “tools”. Aqui, tenho a impressão que é um problema com o plugin (especifico que não sou desenvolvedor Ruby) mas parece que a camada de abstração utilizada torna as coisas mais complicadas. Na dúvida, demos um fork nesse plugin e colocamos debuggers em todo lugar, a URL, os headers que vão para o Azure estão 100% conformes.

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

Parece que o único lugar onde chamamos um “tools” em ./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

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

Na mensagem de PEYRUSSE Christian, percebemos que o “dialect” é “dialect: #DiscourseAi::Completions::Dialects::ChatGpt:0x00007f230513e6e0

Se isso puder ajudar…

Obrigado.

Não é, desde que você esteja usando um endpoint atualizado.

Estamos usando endpoints do Azure neste site, mas com o parâmetro sendo api-version=2023-12-01-preview. Você pode tentar usar um endpoint com essa versão da API?

Vamos verificar isso e avisaremos com certeza na próxima semana, atenciosamente.

Olá,

Esta manhã atualizei os plugins Discourse AI e agora funciona… é ótimo, obrigado pela sua ajuda.

2 curtidas

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