使用内部 OpenAI API 配置 Discourse AI

大家好,

我们正在探索 Discourse AI,以便在我们的 Discourse 论坛中提供一个对话助手,帮助用户进行导航、了解功能、分类、主题以及解答与论坛相关的通用问题。

我们可以访问我们组织内部的 GPT 和 Claude LLM API,我们希望了解如何在 Discourse AI 中将模型配置为提供商。我们的目标是利用 LLM 的功能,在我们的 Discourse 中构建一个更具情境感的对话助手。

当前的 LLM 配置

我们目前可以访问一个兼容 OpenAI 的内部 API 端点:

端点:

https://genai-nexus.api.corpinter.net/openai/deployments/gpt-5.5/chat/completions?api-version=2024-10-21

模型:

gpt-5.5

我们特别希望从那些曾将 Discourse AI 与企业/内部兼容 OpenAI 的 API 网关(而非直接使用 OpenAI 的公共 API)进行配置的用户那里获得指导。

任何配置示例或建议都将不胜感激。

提前感谢!

选择 openai 作为提供商,并使用您拥有的 URL 进行配置。

已尝试选择 OpenAI 作为提供商,但仍无法进行配置。

还有其他方法或建议吗?

我也是使用的这种API,我的模型ID是gpt-5.6-sol,目前运行正常。

你能告诉我你是如何配置的吗?我填完所有信息后,它还是无法运行。

在管理后台的AI-LLM-未配置的LLM模版,选择GPT-5.6 Sol,然后输入第三方API提供的两个信息:

托管模型的服务的 URL:比如ai.com/v1/responses

托管模型的服务的 API 密钥:第三方提供的

下方可以点击按钮“运行测试”,如果失败的话,可能是因为URL填写格式是错误的。

是的,在提供了上述所有信息后,我仍然收到内部服务器错误提示。

我测试了你的URL并没有返回你的这个图片的信息,请问你这张图片是在哪个页面的信息。

我没有输入API密钥运行测试的结果是:非流式传输请求失败:{“message”:“Unauthorized”}

看起来你似乎需要截图出来你的完整配置页面


这个

forum.example.com/logs 的日志中是否有更详细的错误信息?

如果您使用的是内部 IP 地址,则需要将该域名添加到 DISCOURSE_ALLOWED_INTERNAL_HOSTS 中的安全过滤器里。

image

这是日志

plugins/discourse-ai/lib/completions/dialects/dialect.rb:217:in 'DiscourseAi::Completions::Dialects::Dialect#trim_messages'
plugins/discourse-ai/lib/completions/dialects/dialect.rb:140:in 'DiscourseAi::Completions::Dialects::Dialect#translate'
plugins/discourse-ai/lib/completions/endpoints/base.rb:126:in 'DiscourseAi::Completions::Endpoints::Base#perform_completion!'
plugins/discourse-ai/lib/completions/endpoints/open_ai.rb:54:in 'DiscourseAi::Completions::Endpoints::OpenAi#perform_completion!'
plugins/discourse-ai/lib/completions/llm.rb:439:in 'DiscourseAi::Completions::Llm#generate'
plugins/discourse-ai/lib/configuration/llm_validator.rb:36:in 'DiscourseAi::Configuration::LlmValidator#run_test'
plugins/discourse-ai/app/controllers/discourse_ai/admin/ai_llms_controller.rb:159:in 'DiscourseAi::Admin::AiLlmsController#test'
actionpack (8.0.4) lib/action_controller/metal/basic_implicit_render.rb:8:in 'ActionController::BasicImplicitRender#send_action'
actionpack (8.0.4) lib/abstract_controller/base.rb:215:in 'AbstractController::Base#process_action'
activesupport (8.0.4) lib/active_support/callbacks.rb:120:in 'block in ActiveSupport::Callbacks#run_callbacks'
app/controllers/application_controller.rb:442:in 'block in ApplicationController#with_resolved_locale'
i18n (1.14.7) lib/i18n.rb:353:in 'I18n::Base#with_locale'
app/controllers/application_controller.rb:442:in 'ApplicationController#with_resolved_locale'
actionpack (8.0.4) lib/action_dispatch/routing/route_set.rb:908:in 'ActionDispatch::Routing::RouteSet#call'
lib/middleware/omniauth_bypass_middleware.rb:35:in 'Middleware::OmniauthBypassMiddleware#call'
lib/middleware/crawler_hooks.rb:11:in 'Middleware::CrawlerHooks#call'
rack (2.2.23) lib/rack/tempfile_reaper.rb:15:in 'Rack::TempfileReaper#call'
rack (2.2.23) lib/rack/conditional_get.rb:27:in 'Rack::ConditionalGet#call'
rack (2.2.23) lib/rack/head.rb:12:in 'Rack::Head#call'
actionpack (8.0.4) lib/action_dispatch/middleware/cookies.rb:706:in 'ActionDispatch::Cookies#call'
actionpack (8.0.4) lib/action_dispatch/middleware/callbacks.rb:31:in 'block in ActionDispatch::Callbacks#call'
activesupport (8.0.4) lib/active_support/callbacks.rb:100:in 'block in ActiveSupport::Callbacks#run_callbacks'
actionpack (8.0.4) lib/action_dispatch/middleware/debug_exceptions.rb:31:in 'ActionDispatch::DebugExceptions#call'
actionpack (8.0.4) lib/action_dispatch/middleware/show_exceptions.rb:32:in 'ActionDispatch::ShowExceptions#call'
logster (2.20.1) lib/logster/middleware/reporter.rb:40:in 'Logster::Middleware::Reporter#call'
lib/middleware/default_headers.rb:13:in 'Middleware::DefaultHeaders#call'
railties (8.0.4) lib/rails/rack/logger.rb:41:in 'Rails::Rack::Logger#call_app'
railties (8.0.4) lib/rails/rack/logger.rb:29:in 'Rails::Rack::Logger#call'
lib/middleware/enforce_hostname.rb:23:in 'Middleware::EnforceHostname#call'
rack (2.2.23) lib/rack/method_override.rb:24:in 'Rack::MethodOverride#call'
actionpack (8.0.4) lib/action_dispatch/middleware/executor.rb:16:in 'ActionDispatch::Executor#call'
rack (2.2.23) lib/rack/sendfile.rb:127:in 'Rack::Sendfile#call'
rack-mini-profiler (4.0.1) lib/mini_profiler.rb:191:in 'Rack::MiniProfiler#call'
message_bus (4.4.1) lib/message_bus/rack/middleware.rb:60:in 'MessageBus::Rack::Middleware#call'
lib/middleware/request_tracker.rb:321:in 'Middleware::RequestTracker#call'
actionpack (8.0.4) lib/action_dispatch/middleware/remote_ip.rb:96:in 'ActionDispatch::RemoteIp#call'
lib/middleware/overload_protections.rb:22:in 'Middleware::OverloadProtections#call'
lib/middleware/processing_request.rb:14:in 'Middleware::ProcessingRequest#call'
railties (8.0.4) lib/rails/engine.rb:535:in 'Rails::Engine#call'
railties (8.0.4) lib/rails/railtie.rb:226:in 'Kernel#public_send'
railties (8.0.4) lib/rails/railtie.rb:226:in 'Kernel#method_missing'
rack (2.2.23) lib/rack/urlmap.rb:74:in 'block in Rack::URLMap#call'
rack (2.2.23) lib/rack/urlmap.rb:58:in 'Array#each'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in 'Unicorn::HttpServer#process_client'
unicorn (6.1.0)

关于我分享的日志,有什么建议或推荐吗?接下来该怎么做?

就我遇到的情况,尝试改变 Context window 的值试试,例如 200000 或 128000 之类的。