Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Volcano engine large speech model cannot be added #2058

Merged
merged 1 commit into from
Jan 21, 2025

Conversation

shaohuzhang1
Copy link
Contributor

fix: Volcano engine large speech model cannot be added

Copy link

f2c-ci-robot bot commented Jan 21, 2025

Adding the "do-not-merge/release-note-label-needed" label because no release-note block was detected, please follow our release note process to remove it.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Copy link

f2c-ci-robot bot commented Jan 21, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@shaohuzhang1 shaohuzhang1 merged commit d1f7a82 into main Jan 21, 2025
4 checks passed
raise AppApiException(ValidCode.valid_error.value, __('Verification failed, please check whether the parameters are correct: {error}').format(error=str(e)))
raise AppApiException(ValidCode.valid_error.value,
__('Verification failed, please check whether the parameters are correct: {error}').format(
error=str(e)))
else:
return False
return True
Copy link
Contributor Author

Choose a reason for hiding this comment

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

The code you provided appears to be a part of an API handling class for validating and invoking LLM models. Here's a brief review:

Potential Issues/Improvements

  1. Error Handling: The exception handling seems mostly correct, but consider adding specific error messages if certain conditions aren't met.

  2. Validation Logic:

    • Ensure that provider.get_model_type_list() returns the expected list.
    • Validate that all necessary keys (api_base, api_key) are present in model_credential.
  3. Parameter Check:

    • It's good practice to add checks after model retrieval to ensure it's callable (e.g., .invoke()).
  4. Documentation:

    • Ensure that the docstrings explain the purpose clearly, especially around how parameters are used when creating or verifying models.
  5. Security Considerations: Although Python has built-in security layers, ensure that sensitive information like API keys is handled securely.

  6. Type Annotations:

    • Add type annotations to variables and function arguments where appropriate to improve clarity.

Here's some cleaned-up version with these considerations:

from django.forms import BaseForm
from django.utils.translation import gettext_lazy as _

from typing import Dict

class OpenAILLMModelParams(BaseForm):
    """Class to handle form fields related to OpenAI LLM model parameters."""

    temperature = forms.SliderField(
        tooltip_label=_('Temperature'),
        help_text=_('Higher values make the output more random; lower makes it more focused.'),
        required=True,
        default=0.7,
        min_value=0.1,
        max_value=1.0,
        step=0.01,
        precision=2
    )

    max_tokens = forms.SliderField(
        tooltip_label=_('Maximum Tokens'),
        help_text=_('Specify the maximum number of tokens the model can generate.'),
        required=True,
        default=800,
        min_value=1,
        max_value=100000
    )

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['temperature'].initial = 0.7
        self.fields['max_tokens'].initial = 800

    def is_valid(self, model_type: str, model_name: str, model_credential: Dict[str, object], raise_exception: bool = False) -> bool:
        """
        Validates the model setup based on the given parameters.
        
        :param model_type: Type of the model (e.g., gpt-3.5-turbo).
        :param model_name: Name of the model variant within the type (e.g., chat-completion).
        :param model_credential: Credentials needed to access the model.
        :param raise_exception: Whether to raise errors instead of returning false upon failure.
        :return: True if valid, otherwise raises AppApiException.
        """
        # Fetch available model types from the provider
        model_type_list = [item['value'] for item in provider.get_model_type_list()]
        if model_type not in model_type_list:
            if raise_exception:
                raise AppApiException(ValidCode.valid_error.value, f"{model_type} Model type is not supported")
            return False
        
        # Validate credential keys
        required_keys = ['api_base', 'api_key']
        missing_keys = set(required_keys).difference(set(model_credential.keys()))
        if missing_keys:
            message = "Missing required credentials:"
            for key in missing_keys:
                message += f" '{key}', "
            if raise_exception:
                raise AppApiException(ValidCode.valid_error.value, message[:-2] + '. ')
            return False
        
        try:
            # Create and invoke the model instance
            model = provider.get_model(model_type, model_name, model_credential, **self.cleaned_data)
            model.invoke([HumanMessage(content='Hello')])
            
            return True
        except Exception as e:
            if	raise_exception and isinstance(e, AppApiException):
                raise e
				
            if raise_exception and hasattr(e, 'message'):
                raise AppApiException(ValidCode.valid_error.value, e.message)
                
            elif raise_exception:
                raise AppApiException(ValidCode.valid_error.value, "Verification failed. Please check the input.")

            return False

By making these modifications, you should have improved the robustness and readability of your code. Always ensure to update documentation according to changes made.

@shaohuzhang1 shaohuzhang1 deleted the pr@main@fix_volcano_engine branch January 21, 2025 09:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant