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 :
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 ?
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 ?
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.
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
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.
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 %.
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?)
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 ?