Skip to content

feat(chatmodels): add DaoXE OpenAI-compatible gateway node#6624

Open
seven7763 wants to merge 1 commit into
FlowiseAI:mainfrom
seven7763:feat/add-daoxe-chat-model
Open

feat(chatmodels): add DaoXE OpenAI-compatible gateway node#6624
seven7763 wants to merge 1 commit into
FlowiseAI:mainfrom
seven7763:feat/add-daoxe-chat-model

Conversation

@seven7763

@seven7763 seven7763 commented Jul 14, 2026

Copy link
Copy Markdown

Summary

Add DaoXE as a first-class Flowise Chat Model node + credential, same OpenAI-compatible gateway pattern as CometAPI.

  • Credential: DaoXEApi (API key from https://daoxe.com/dashboard)
  • Node: ChatDaoXEhttps://daoxe.com/v1 via @langchain/openai ChatOpenAI
  • Model IDs are account-scoped (GET /v1/models); no static public model/price table
  • Multi-model multi-protocol gateway; this node uses Chat Completions only
  • Not available in mainland China

Files

  • packages/components/credentials/DaoXEApi.credential.ts
  • packages/components/nodes/chatmodels/ChatDaoXE/ChatDaoXE.ts
  • packages/components/nodes/chatmodels/ChatDaoXE/daoxe.svg

I maintain DaoXE. Examples: https://github.com/seven7763/DaoXE-AI

Why

Flowise is popular for low-code agents among price-sensitive builders (including Vietnam and CIS Russian-speaking communities). A named DaoXE node is clearer than routing through generic ChatOpenAICustom.

Test plan

  • Create DaoXE credential with dashboard API key
  • Drop ChatDaoXE, set model to exact account ID from GET /v1/models
  • Run a simple chatflow (stream on/off)
  • Confirm baseURL stays https://daoxe.com/v1

Add ChatDaoXE + DaoXE API credential for Flowise, following the CometAPI
OpenAI-compatible pattern with baseURL https://daoxe.com/v1.

Model IDs are account-scoped (GET /v1/models); no static public price list.
Not available in mainland China.

Signed-off-by: seven7763 <seven7763@users.noreply.github.com>

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new ChatDaoXE chat model node and its corresponding DaoXEApi credential component to integrate with the DaoXE API. The review feedback highlights two key improvements: safely parsing the temperature parameter to avoid NaN values when it is not provided, and replacing the deprecated maxTokens property with maxCompletionTokens to align with newer models and SDKs.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment on lines +139 to +145
const obj: ChatOpenAIFields = {
temperature: parseFloat(temperature),
modelName,
openAIApiKey,
apiKey: openAIApiKey,
streaming: streaming ?? true
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

If temperature is not provided, parseFloat(temperature) will evaluate to NaN. This NaN value is then passed to the ChatOpenAI constructor, which can cause API errors or unexpected behavior. To prevent this, only set the temperature property if it is a valid, non-empty value, adhering to the loose equality standard for nullish checks.

Suggested change
const obj: ChatOpenAIFields = {
temperature: parseFloat(temperature),
modelName,
openAIApiKey,
apiKey: openAIApiKey,
streaming: streaming ?? true
}
const obj: ChatOpenAIFields = {
modelName,
openAIApiKey,
apiKey: openAIApiKey,
streaming: streaming ?? true
}
if (temperature != null && temperature !== '') {
obj.temperature = parseFloat(temperature)
}
References
  1. In JavaScript/TypeScript, use loose equality (== null) as a standard idiom for a 'nullish' check that covers both null and undefined.

streaming: streaming ?? true
}

if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To maintain consistency with the main ChatOpenAI node in this repository and to support newer models/SDKs correctly, use maxCompletionTokens instead of the deprecated maxTokens property on the ChatOpenAIFields object.

Suggested change
if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10)
if (maxTokens) obj.maxCompletionTokens = parseInt(maxTokens, 10)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant