Skip to content

Conversation

Jintao-Huang
Copy link
Collaborator

No description provided.

Copy link
Contributor

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

Choose a reason for hiding this comment

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

Summary of Changes

Hello @Jintao-Huang, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request integrates comprehensive support for the ling2 and ring2 large language models into the system. It achieves this by extending the model and template constant definitions, registering the specific model configurations with their associated model groups and tokenizer functions, and implementing their distinct chat templating mechanisms. This enhancement broadens the system's compatibility and operational capabilities with these new LLMs.

Highlights

  • New Model Types: Added ling2 and ring2 as new LLMModelType entries in swift/llm/model/constant.py.
  • Model Registration: Registered ling2 and ring2 models in swift/llm/model/model/llm.py, including their respective model groups (inclusionAI/Ling-mini-2.0, inclusionAI/Ling-mini-base-2.0, inclusionAI/Ring-mini-2.0), template types, and BailingMoeV2ForCausalLM architecture.
  • New Template Types: Introduced ling2 and ring2 as new LLMTemplateType entries in swift/llm/template/constant.py.
  • Template Implementation: Defined and registered Ling2TemplateMeta in swift/llm/template/template/llm.py for both ling2 and ring2 template types, specifying their unique prompt structures, system prefixes, and chat separators.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

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

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 adds support for the ling2 and ring2 models. The changes include adding new model and template types, registering the models with their metadata, and defining their corresponding prompt templates. The implementation is consistent and follows the existing structure for adding new models. I have one suggestion to improve the maintainability of the template definitions.

Comment on lines 390 to 408
@dataclass
class Ling2TemplateMeta(TemplateMeta):
prefix: Prompt = field(default_factory=lambda: ['<role>SYSTEM</role>detailed thinking off<|role_end|>'])
system_prefix: Optional[Prompt] = field(
default_factory=lambda: ['<role>SYSTEM</role>{{SYSTEM}}\ndetailed thinking off<|role_end|>'])
prompt: Prompt = field(default_factory=lambda: ['<role>HUMAN</role>{{QUERY}}<|role_end|><role>ASSISTANT</role>'])
chat_sep: Optional[Prompt] = field(default_factory=lambda: ['<|role_end|>'])
suffix: Prompt = field(default_factory=lambda: ['<|role_end|>'])


register_template(Ling2TemplateMeta(LLMTemplateType.ling2))

register_template(
Ling2TemplateMeta(
LLMTemplateType.ring2,
prefix=[],
system_prefix=['<role>SYSTEM</role>{{SYSTEM}}<|role_end|>'],
response_prefix='<think>',
))
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

To improve code clarity and maintainability, it's better to separate the template definitions for ling2 and ring2 into their own dataclasses, inheriting from a common base class. The current approach of reusing Ling2TemplateMeta for ring2 by overriding parameters works, but it makes the configuration for ring2 less explicit and harder to read. A dedicated class for each template makes the code more modular and easier to understand.

@dataclass
class _LingRingBaseTemplateMeta(TemplateMeta):
    prompt: Prompt = field(default_factory=lambda: ['<role>HUMAN</role>{{QUERY}}<|role_end|><role>ASSISTANT</role>'])
    chat_sep: Optional[Prompt] = field(default_factory=lambda: ['<|role_end|>'])
    suffix: Prompt = field(default_factory=lambda: ['<|role_end|>'])


@dataclass
class Ling2TemplateMeta(_LingRingBaseTemplateMeta):
    prefix: Prompt = field(default_factory=lambda: ['<role>SYSTEM</role>detailed thinking off<|role_end|>'])
    system_prefix: Optional[Prompt] = field(
        default_factory=lambda: ['<role>SYSTEM</role>{{SYSTEM}}\ndetailed thinking off<|role_end|>'])


@dataclass
class Ring2TemplateMeta(_LingRingBaseTemplateMeta):
    prefix: Prompt = field(default_factory=list)
    system_prefix: Optional[Prompt] = field(
        default_factory=lambda: ['<role>SYSTEM</role>{{SYSTEM}}<|role_end|>'])
    response_prefix: Optional[str] = '<think>'


register_template(Ling2TemplateMeta(LLMTemplateType.ling2))
register_template(Ring2TemplateMeta(LLMTemplateType.ring2))

@Jintao-Huang Jintao-Huang linked an issue Sep 16, 2025 that may be closed by this pull request
@Jintao-Huang Jintao-Huang merged commit a1a5e0c into modelscope:main Sep 16, 2025
1 of 2 checks passed
Jintao-Huang added a commit that referenced this pull request Sep 17, 2025
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.

支持百灵系列开源大模型

3 participants