Spaces:
Configuration error
Configuration error
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. ========= | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. ========= | |
from __future__ import annotations | |
from typing import ClassVar, Optional, Union | |
from camel.configs.base_config import BaseConfig | |
from camel.types import NOT_GIVEN, NotGiven | |
class QwenConfig(BaseConfig): | |
r"""Defines the parameters for generating chat completions using the | |
Qwen API. You can refer to the following link for more details: | |
https://help.aliyun.com/zh/model-studio/developer-reference/use-qwen-by-calling-api | |
Args: | |
stream (bool, optional): Whether to stream the response. | |
(default: :obj:`False`) | |
temperature (float, optional): Controls the diversity and focus of | |
the generated results. Lower values make the output more focused, | |
while higher values make it more diverse. (default: :obj:`0.3`) | |
top_p (float, optional): Controls the diversity and focus of the | |
generated results. Higher values make the output more diverse, | |
while lower values make it more focused. (default: :obj:`0.9`) | |
presence_penalty (float, optional): Controls the repetition of | |
content in the generated results. Positive values reduce the | |
repetition of content, while negative values increase it. | |
(default: :obj:`0.0`) | |
response_format (object, optional): Specifies the format of the | |
returned content. The available values are `{"type": "text"}` or | |
`{"type": "json_object"}`. Setting it to `{"type": "json_object"}` | |
will output a standard JSON string. | |
(default: :obj:`{"type": "text"}`) | |
max_tokens (Union[int, NotGiven], optional): Allows the model to | |
generate the maximum number of tokens. | |
(default: :obj:`NOT_GIVEN`) | |
seed (int, optional): Sets the seed parameter to make the text | |
generation process more deterministic, typically used to ensure | |
that the results are consistent across model runs. By passing the | |
same seed value (specified by you) in each model call while | |
keeping other parameters unchanged, the model is likely to return | |
the same result. | |
(default: :obj:`None`) | |
stop (str or list, optional): Using the stop parameter, the model will | |
automatically stop generating text when it is about to include the | |
specified string or token_id. You can use the stop parameter to | |
control the output of the model by passing sensitive words. | |
(default: :obj:`None`) | |
tools (list, optional): Specifies an array of tools that the model can | |
call. It can contain one or more tool objects. During a function | |
call process, the model will select one tool from the array. | |
(default: :obj:`None`) | |
extra_body (dict, optional): Additional parameters to be sent to the | |
Qwen API. If you want to enable internet search, you can set this | |
parameter to `{"enable_search": True}`. | |
(default: :obj:`{"enable_search": False}`) | |
include_usage (bool, optional): When streaming, specifies whether to | |
include usage information in `stream_options`. (default: | |
:obj:`True`) | |
""" | |
stream: bool = False | |
temperature: float = 0.3 | |
top_p: float = 0.9 | |
presence_penalty: float = 0.0 | |
response_format: ClassVar[dict] = {"type": "text"} | |
max_tokens: Union[int, NotGiven] = NOT_GIVEN | |
seed: Optional[int] = None | |
stop: Optional[Union[str, list]] = None | |
extra_body: ClassVar[dict] = {"enable_search": False} | |
def __init__(self, include_usage: bool = True, **kwargs): | |
super().__init__(**kwargs) | |
# Only set stream_options when stream is True | |
# Otherwise, it will raise error when calling the API | |
if self.stream: | |
self.stream_options = {"include_usage": include_usage} | |
QWEN_API_PARAMS = {param for param in QwenConfig.model_fields.keys()} | |