agentscope.models.model module

The configuration file should contain one or a list of model configs, and each model config should follow the following format.

{
    "config_name": "{config_name}",
    "model_type": "openai_chat" | "post_api" | ...,
    ...
}

After that, you can specify model by {config_name}.

Note

The parameters for different types of models are different. For OpenAI API, the format is:

{
    "config_name": "{id of your model}",
    "model_type": "openai_chat",
    "model_name": "{model_name_for_openai, e.g. gpt-3.5-turbo}",
    "api_key": "{your_api_key}",
    "organization": "{your_organization, if needed}",
    "client_args": {
        # ...
    },
    "generate_args": {
        # ...
    }
}

For Post API, toking huggingface inference API as an example, its format is:

{
    "config_name": "{config_name}",
    "model_type": "post_api",
    "api_url": "{api_url}",
    "headers": {"Authorization": "Bearer {API_TOKEN}"},
    "max_length": {max_length_of_model},
    "timeout": {timeout},
    "max_retries": {max_retries},
    "generate_args": {
        "temperature": 0.5,
        # ...
    }
}
class agentscope.models.model.ModelWrapperBase(config_name: str, model_name: str, **kwargs: Any)[source]

Bases: object

The base class for model wrapper.

model_type: str

The type of the model wrapper, which is to identify the model wrapper class in model configuration.

__init__(config_name: str, model_name: str, **kwargs: Any) None[source]

Base class for model wrapper.

All model wrappers should inherit this class and implement the __call__ function.

Parameters:
  • config_name (str) – The id of the model, which is used to extract configuration from the config file.

  • model_name (str) – The name of the model.

config_name: str

The name of the model configuration.

model_name: str

The name of the model, which is used in model api calling.

classmethod get_wrapper(model_type: str) Type[ModelWrapperBase][source]

Get the specific model wrapper

format(*args: Msg | Sequence[Msg]) List[dict] | str[source]

Format the input messages into the format that the model API required.

static format_for_common_chat_models(*args: Msg | Sequence[Msg]) List[dict][source]

A common format strategy for chat models, which will format the input messages into a system message (if provided) and a user message.

Note this strategy maybe not suitable for all scenarios, and developers are encouraged to implement their own prompt engineering strategies.

The following is an example:

prompt1 = model.format(
    Msg("system", "You're a helpful assistant", role="system"),
    Msg("Bob", "Hi, how can I help you?", role="assistant"),
    Msg("user", "What's the date today?", role="user")
)

prompt2 = model.format(
    Msg("Bob", "Hi, how can I help you?", role="assistant"),
    Msg("user", "What's the date today?", role="user")
)

The prompt will be as follows:

# prompt1
[
    {
        "role": "system",
        "content": "You're a helpful assistant"
    },
    {
        "role": "user",
        "content": (
            "## Conversation History\n"
            "Bob: Hi, how can I help you?\n"
            "user: What's the date today?"
        )
    }
]

# prompt2
[
    {
        "role": "user",
        "content": (
            "## Conversation History\n"
            "Bob: Hi, how can I help you?\n"
            "user: What's the date today?"
        )
    }
]
Parameters:

args (Union[Msg, Sequence[Msg]]) – The input arguments to be formatted, where each argument should be a Msg object, or a list of Msg objects. In distribution, placeholder is also allowed.

Returns:

The formatted messages.

Return type:

List[dict]