autogen_ext.models.llama_cpp#

class LlamaCppChatCompletionClient(model_info: ModelInfo | None = None, **kwargs: Unpack)[source]#

基类: ChatCompletionClient

LlamaCpp 模型的聊天完成客户端。 要使用此客户端,您必须安装 llama-cpp 额外依赖

pip install "autogen-ext[llama-cpp]"

此客户端允许您与 LlamaCpp 模型交互,可以通过指定本地模型路径或从 Hugging Face Hub 下载模型。

参数:
  • model_info (可选, ModelInfo) – 关于模型的信息。 默认为 DEFAULT_MODEL_INFO.

  • model_path (可选, str) – LlamaCpp 模型文件的路径。 如果未提供 repo_id 和 filename,则为必需。

  • repo_id (可选, str) – Hugging Face Hub 存储库 ID。 如果未提供 model_path,则为必需。

  • filename (可选, str) – Hugging Face Hub 存储库中模型的文件名。 如果未提供 model_path,则为必需。

  • n_gpu_layers (可选, int) – 要放在 GPU 上的层数。

  • n_ctx (可选, int) – 上下文大小。

  • n_batch (可选, int) – 批量大小。

  • verbose (可选, bool) – 是否打印详细输出。

  • **kwargs – 传递给 Llama 类的其他参数。

示例

以下代码段显示了如何将客户端与本地模型文件一起使用

import asyncio

from autogen_core.models import UserMessage
from autogen_ext.models.llama_cpp import LlamaCppChatCompletionClient


async def main():
    llama_client = LlamaCppChatCompletionClient(model_path="/path/to/your/model.gguf")
    result = await llama_client.create([UserMessage(content="What is the capital of France?", source="user")])
    print(result)


asyncio.run(main())

以下代码段显示了如何将客户端与来自 Hugging Face Hub 的模型一起使用

import asyncio

from autogen_core.models import UserMessage
from autogen_ext.models.llama_cpp import LlamaCppChatCompletionClient


async def main():
    llama_client = LlamaCppChatCompletionClient(
        repo_id="unsloth/phi-4-GGUF", filename="phi-4-Q2_K_L.gguf", n_gpu_layers=-1, seed=1337, n_ctx=5000
    )
    result = await llama_client.create([UserMessage(content="What is the capital of France?", source="user")])
    print(result)


asyncio.run(main())
DEFAULT_MODEL_INFO: ModelInfo = {'family': 'unknown', 'function_calling': True, 'json_output': True, 'structured_output': True, 'vision': False}#
async create(messages: Sequence[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]], *, tools: Sequence[Tool | ToolSchema] = [], json_output: bool | type[BaseModel] | None = None, extra_create_args: Mapping[str, Any] = {}, cancellation_token: CancellationToken | None = None) CreateResult[source]#

从模型创建一个单一的响应。

参数:
  • messages (Sequence[LLMMessage]) – 要发送给模型的消息。

  • tools (Sequence[Tool | ToolSchema], optional) – 要与模型一起使用的工具。 默认为 []。

  • json_output (Optional[bool | type[BaseModel]], optional) – 是否使用 JSON 模式、结构化输出,或两者都不使用。默认为 None。如果设置为 Pydantic BaseModel 类型,它将被用作结构化输出的输出类型。如果设置为布尔值,它将用于确定是否使用 JSON 模式。如果设置为 True,请确保指示模型在指令或提示中生成 JSON 输出。

  • extra_create_args (Mapping[str, Any], optional) – 传递给底层客户端的额外参数。默认为 {}。

  • cancellation_token (Optional[CancellationToken], optional) – 用于取消的令牌。默认为 None。

返回值:

CreateResult – 模型调用的结果。

async create_stream(messages: Sequence[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]], *, tools: Sequence[Tool | ToolSchema] = [], json_output: bool | type[BaseModel] | None = None, extra_create_args: Mapping[str, Any] = {}, cancellation_token: CancellationToken | None = None) AsyncGenerator[str | CreateResult, None][source]#

创建一个来自模型的字符串块流,以 CreateResult 结尾。

参数:
  • messages (Sequence[LLMMessage]) – 要发送给模型的消息。

  • tools (Sequence[Tool | ToolSchema], optional) – 要与模型一起使用的工具。 默认为 []。

  • json_output (Optional[bool | type[BaseModel]], optional) –

    是否使用 JSON 模式、结构化输出,或者都不使用。 默认为 None。 如果设置为 Pydantic BaseModel 类型,它将用作结构化输出的输出类型。 如果设置为布尔值,它将用于确定是否使用 JSON 模式。 如果设置为 True,请确保指示模型在指令或提示中生成 JSON 输出。

  • extra_create_args (Mapping[str, Any], optional) – 传递给底层客户端的额外参数。默认为 {}。

  • cancellation_token (Optional[CancellationToken], optional) – 用于取消的令牌。默认为 None。

返回值:

AsyncGenerator[Union[str, CreateResult], None] – 一个生成器,产生字符串块,并以 CreateResult 结尾。

actual_usage() RequestUsage[source]#
property capabilities: ModelInfo#
count_tokens(messages: Sequence[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage], **kwargs: Any) int[source]#
property model_info: ModelInfo#
remaining_tokens(messages: Sequence[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage], **kwargs: Any) int[source]#
total_usage() RequestUsage[source]#
async close() None[source]#

关闭 LlamaCpp 客户端。