Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,27 @@ private static List<ModelProvider> getAllProviders() {
providers.add(new DashScopeCompatibleProvider.Qwen3VlPlusOpenAI());
providers.add(new DashScopeCompatibleProvider.Qwen3VlPlusMultiAgentOpenAI());

// DashScope Compatible providers (Qwen3.5)
providers.add(new DashScopeCompatibleProvider.Qwen35PlusOpenAI());
providers.add(new DashScopeCompatibleProvider.Qwen35PlusMultiAgentOpenAI());
providers.add(new DashScopeCompatibleProvider.Qwen35FlashOpenAI());
providers.add(new DashScopeCompatibleProvider.Qwen35FlashMultiAgentOpenAI());
providers.add(new DashScopeCompatibleProvider.Qwen35_397bA17bOpenAI());
providers.add(new DashScopeCompatibleProvider.Qwen35_397bA17bMultiAgentOpenAI());
Comment on lines +102 to +105
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

ProviderFactory now references Qwen3.5 397B-A17B providers using class names with underscores/mixed casing (Qwen35_397bA17b...). If you rename those provider classes to match the naming convention used elsewhere (no underscores), please update these instantiations to keep the factory compiling and consistent.

Copilot uses AI. Check for mistakes.

// DashScope Native providers
providers.add(new DashScopeProvider.QwenPlusDashScope());
providers.add(new DashScopeProvider.QwenPlusMultiAgentDashScope());
providers.add(new DashScopeProvider.QwenPlusThinkingDashScope());
providers.add(new DashScopeProvider.QwenPlusThinkingMultiAgentDashScope());
providers.add(new DashScopeProvider.Qwen3VlPlusDashScope());
providers.add(new DashScopeProvider.Qwen3VlPlusMultiAgentDashScope());
providers.add(new DashScopeProvider.Qwen35PlusDashScope());
providers.add(new DashScopeProvider.Qwen35PlusMultiAgentDashScope());
providers.add(new DashScopeProvider.Qwen35FlashDashScope());
providers.add(new DashScopeProvider.Qwen35FlashMultiAgentDashScope());
providers.add(new DashScopeProvider.Qwen35_397bA17bDashScope());
providers.add(new DashScopeProvider.Qwen35_397bA17bMultiAgentDashScope());

// Gemini providers
providers.add(new GeminiProvider.Gemini25FlashGemini());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,4 +182,115 @@ public String getProviderName() {
return "OpenAI to DashScope (Multi-Agent)";
}
}

/** Qwen3.5-Plus - Native multimodal model (image, video). */
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
Comment on lines +186 to +190
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

The Javadoc says these Qwen3.5 models are "Native" multimodal models, but this class is the DashScope OpenAI-compatible provider. Please reword these new Javadocs to avoid implying the native DashScope API is being used (similar to the existing "via OpenAI compatible API" wording used for Qwen3-VL-Plus in this file).

Copilot uses AI. Check for mistakes.
ModelCapability.VIDEO
})
public static class Qwen35PlusOpenAI extends DashScopeCompatibleProvider {
public Qwen35PlusOpenAI() {
super("qwen3.5-plus", false);
}

@Override
public String getProviderName() {
return "OpenAI to DashScope";
}
}

/** Qwen3.5-Plus with multi-agent formatter. */
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO,
ModelCapability.MULTI_AGENT_FORMATTER
})
public static class Qwen35PlusMultiAgentOpenAI extends DashScopeCompatibleProvider {
public Qwen35PlusMultiAgentOpenAI() {
super("qwen3.5-plus", true);
}

@Override
public String getProviderName() {
return "OpenAI to DashScope (Multi-Agent)";
}
}

/** Qwen3.5-Flash - Native multimodal model (image, video). */
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO
})
public static class Qwen35FlashOpenAI extends DashScopeCompatibleProvider {
public Qwen35FlashOpenAI() {
super("qwen3.5-flash", false);
}

@Override
public String getProviderName() {
return "OpenAI to DashScope";
}
}

/** Qwen3.5-Flash with multi-agent formatter. */
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO,
ModelCapability.MULTI_AGENT_FORMATTER
})
public static class Qwen35FlashMultiAgentOpenAI extends DashScopeCompatibleProvider {
public Qwen35FlashMultiAgentOpenAI() {
super("qwen3.5-flash", true);
}

@Override
public String getProviderName() {
return "OpenAI to DashScope (Multi-Agent)";
}
}

/** Qwen3.5-397B-A17B - Native multimodal MoE model (image, video). */
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO
})
public static class Qwen35_397bA17bOpenAI extends DashScopeCompatibleProvider {
public Qwen35_397bA17bOpenAI() {
super("qwen3.5-397b-a17b", false);
}
Comment on lines +267 to +270
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

The class name includes an underscore and mixes casing in the size suffix ("397bA17b"), which is inconsistent with the other provider class names in this file (none use underscores). Consider renaming to a consistent Java identifier style (e.g., no underscores and consistent "B" casing) and update ProviderFactory accordingly.

Copilot uses AI. Check for mistakes.

@Override
public String getProviderName() {
return "OpenAI to DashScope";
}
}

/** Qwen3.5-397B-A17B with multi-agent formatter. */
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO,
ModelCapability.MULTI_AGENT_FORMATTER
})
public static class Qwen35_397bA17bMultiAgentOpenAI extends DashScopeCompatibleProvider {
public Qwen35_397bA17bMultiAgentOpenAI() {
super("qwen3.5-397b-a17b", true);
}

@Override
public String getProviderName() {
return "OpenAI to DashScope (Multi-Agent)";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -222,4 +222,127 @@ public String getProviderName() {
return "DashScope (Multi-Agent)";
}
}

/**
* Qwen3.5-Plus - Native multimodal model (image, video).
*/
@ModelCapabilities({
Comment on lines +226 to +229
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

Now that Qwen3.5 providers are added in this file, the class-level Javadoc that lists supported models should be updated to include the new Qwen3.5 model IDs (otherwise the documentation is outdated).

Copilot uses AI. Check for mistakes.
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO
})
public static class Qwen35PlusDashScope extends DashScopeProvider {
public Qwen35PlusDashScope() {
super("qwen3.5-plus", false);
}

@Override
public String getProviderName() {
return "DashScope";
}
}

/**
* Qwen3.5-Plus with multi-agent formatter.
*/
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO,
ModelCapability.MULTI_AGENT_FORMATTER
})
public static class Qwen35PlusMultiAgentDashScope extends DashScopeProvider {
public Qwen35PlusMultiAgentDashScope() {
super("qwen3.5-plus", true);
}

@Override
public String getProviderName() {
return "DashScope (Multi-Agent)";
}
}

/**
* Qwen3.5-Flash - Native multimodal model (image, video).
*/
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO
})
public static class Qwen35FlashDashScope extends DashScopeProvider {
public Qwen35FlashDashScope() {
super("qwen3.5-flash", false);
}

@Override
public String getProviderName() {
return "DashScope";
}
}

/**
* Qwen3.5-Flash with multi-agent formatter.
*/
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO,
ModelCapability.MULTI_AGENT_FORMATTER
})
public static class Qwen35FlashMultiAgentDashScope extends DashScopeProvider {
public Qwen35FlashMultiAgentDashScope() {
super("qwen3.5-flash", true);
}

@Override
public String getProviderName() {
return "DashScope (Multi-Agent)";
}
}

/**
* Qwen3.5-397B-A17B - Native multimodal MoE model (image, video).
*/
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO
})
public static class Qwen35_397bA17bDashScope extends DashScopeProvider {
public Qwen35_397bA17bDashScope() {
super("qwen3.5-397b-a17b", false);
}
Comment on lines +317 to +320
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

The class name includes an underscore and uses mixed casing in the size suffix ("397bA17b"), which is inconsistent with the other provider class names in this file (none use underscores). Consider renaming to a consistent Java identifier style and update ProviderFactory references.

Copilot uses AI. Check for mistakes.

@Override
public String getProviderName() {
return "DashScope";
}
}

/**
* Qwen3.5-397B-A17B with multi-agent formatter.
*/
@ModelCapabilities({
ModelCapability.BASIC,
ModelCapability.TOOL_CALLING,
ModelCapability.IMAGE,
ModelCapability.VIDEO,
ModelCapability.MULTI_AGENT_FORMATTER
})
public static class Qwen35_397bA17bMultiAgentDashScope extends DashScopeProvider {
public Qwen35_397bA17bMultiAgentDashScope() {
super("qwen3.5-397b-a17b", true);
}

@Override
public String getProviderName() {
return "DashScope (Multi-Agent)";
}
}
}
Loading