AgentChat
模型
在许多情况下,代理需要访问大型语言模型(LLM)服务,例如OpenAI、Azure OpenAI或本地模型。由于不同提供商拥有不同的API,autogen-core实现了模型客户端协议,而autogen-ext则为流行模型服务提供了一组模型客户端。AgentChat可通过这些模型客户端与模型服务进行交互。
本节简要概述了可用的模型客户端。有关如何直接使用它们的详细信息,请参阅核心 API 文档中的“模型客户端”部分。
注意
请参阅 ChatCompletionCache 以获取与以下客户端配合使用的缓存封装器。
记录模型调用
AutoGen 使用标准的 Python 日志模块来记录模型调用和响应等事件。日志器名称为 autogen_core.EVENT_LOGGER_NAME,事件类型为 LLMCall。
import logging
from autogen_core import EVENT_LOGGER_NAME
logging.basicConfig(level=logging.WARNING)
logger = logging.getLogger(EVENT_LOGGER_NAME)
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.INFO)
OpenAI
要访问 OpenAI 模型,请安装 openai 扩展,该扩展允许您使用 OpenAIChatCompletionClient。
pip install “autogen-ext[openai]”
您还需要从 OpenAI 获取一个 API 密钥。
from autogen_ext.models.openai import OpenAIChatCompletionClient
openai_model_client = OpenAIChatCompletionClient(
model="gpt-4o-2024-08-06",
# api_key="sk-...", # 可选,如果您已设置 OPENAI_API_KEY 环境变量。
)
要测试模型客户端,您可以使用以下代码:
from autogen_core.models import UserMessage
result = await openai_model_client.create([UserMessage(content=“What is the capital of France?”, source="user")])
print(result)
await openai_model_client.close()
CreateResult(finish_reason=‘stop’, content=‘法国的首都巴黎。’, usage=RequestUsage(prompt_tokens=15, completion_tokens=7), cached=False, logprobs=None)
注意
您可以使用此客户端与托管在 OpenAI 兼容端点上的模型配合使用,但我们尚未测试此功能。有关更多信息,请参阅 OpenAIChatCompletionClient。
Azure OpenAI
同样,安装 azure 和 openai 扩展以使用 AzureOpenAIChatCompletionClient。
pip install “autogen-ext[openai,azure]”
要使用该客户端,您需要提供部署 ID、Azure 认知服务端点、API 版本和模型功能。对于身份验证,您可以提供 API 密钥或 Azure Active Directory (AAD) 令牌凭据。
以下代码片段演示了如何使用 AAD 身份验证。所使用的身份必须被分配了认知服务 OpenAI 用户角色。
from autogen_core.models import UserMessage
from autogen_ext.auth.azure import AzureTokenProvider
from autogen_ext.models.openai import AzureOpenAIChatCompletionClient
from azure.identity import DefaultAzureCredential
创建令牌提供程序
token_provider = AzureTokenProvider(
DefaultAzureCredential(),
“https://cognitiveservices.azure.com/.default”,
)
az_model_client = AzureOpenAIChatCompletionClient(
azure_deployment="{your-azure-deployment}",
model="{model-name, such as gpt-4o}",
api_version="2024-06-01",
azure_endpoint=“https://{your-custom-endpoint}.openai.azure.com/”,
azure_ad_token_provider=token_provider, # 可选,若选择基于密钥的身份验证。
# api_key="sk-...", # 用于基于密钥的身份验证。)
result = await az_model_client.create([UserMessage(content=“What is the capital of France?”, source="user")])
print(result)
await az_model_client.close()
有关如何直接使用 Azure 客户端或获取更多信息,请参阅此处。
您可以使用此客户端与托管在 OpenAI 兼容端点上的模型配合使用,不过我们尚未对该功能进行测试。如需更多信息,请参阅 OpenAIChatCompletionClient。
Azure OpenAI
同样,安装 azure 和 openai 扩展以使用 AzureOpenAIChatCompletionClient。
pip install “autogen-ext[openai,azure]”
要使用该客户端,您需要提供部署 ID、Azure 认知服务端点、API 版本以及模型功能。对于身份验证,您可以提供 API 密钥或 Azure Active Directory (AAD) 令牌凭据。
以下代码片段演示了如何使用 AAD 身份验证。所使用的身份必须被分配了认知服务 OpenAI 用户角色。
from autogen_core.models import UserMessage
from autogen_ext.auth.azure import AzureTokenProvider
from autogen_ext.models.openai import AzureOpenAIChatCompletionClient
from azure.identity import DefaultAzureCredential
创建令牌提供程序
token_provider = AzureTokenProvider(
DefaultAzureCredential(),
“https://cognitiveservices.azure.com/.default”,
)
az_model_client = AzureOpenAIChatCompletionClient(
azure_deployment="{your-azure-deployment}",
model="{model-name, such as gpt-4o}",
api_version="2024-06-01",
azure_endpoint=“https://{your-custom-endpoint}.openai.azure.com/”,
azure_ad_token_provider=token_provider, # 可选,若选择基于密钥的身份验证。
# api_key="sk-...", # 用于基于密钥的身份验证。)
result = await az_model_client.create([UserMessage(content=“What is the capital of France?”, source="user")])
print(result)
await az_model_client.close()
有关如何直接使用 Azure 客户端或获取更多信息,请参阅此处。
Azure AI Foundry
Azure AI Foundry(原名 Azure AI Studio)提供托管在 Azure 上的模型。要使用这些模型,您需要使用 AzureAIChatCompletionClient。
您需要安装 azure 扩展才能使用此客户端。
pip install “autogen-ext[azure]”
以下是使用此客户端与 GitHub 市场中的 Phi-4 模型配合使用的示例。
import os
from autogen_core.models import UserMessage
from autogen_ext.models.azure import AzureAIChatCompletionClient
from azure.core.credentials import AzureKeyCredential
client = AzureAIChatCompletionClient(
model="Phi-4",
endpoint="https://models.inference.ai.azure.com",
# 要与模型进行身份验证,您需要在 GitHub 设置中生成一个个人访问令牌 (PAT)。
# 按照以下链接中的说明创建您的PAT令牌:https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
credential=AzureKeyCredential(os.environ[“GITHUB_TOKEN”]),
model_info={
“json_output”: False,
“function_calling”: False,
“vision”: False,
“family”: “unknown”,
“structured_output”: False,
},
)
result = await client.create([UserMessage(content=“What is the capital of France?”, source="user")])
print(result)
await client.close()
finish_reason=‘stop’ content=‘The capital of France is Paris.’ usage=RequestUsage(prompt_tokens=14, completion_tokens=8) cached=False logprobs=None
Anthropic (实验性)
要使用 AnthropicChatCompletionClient,您需要安装 anthropic 扩展。底层它使用 anthropic Python SDK 访问模型。您还需要从 Anthropic 获取 API 密钥。
!pip install -U “autogen-ext[anthropic]”
from autogen_core.models import UserMessage
from autogen_ext.models.anthropic import AnthropicChatCompletionClient
anthropic_client = AnthropicChatCompletionClient(model=“claude-3-7-sonnet-20250219”)
result = await anthropic_client.create([UserMessage(content=“What is the capital of France?”, source="user")])
print(result)
await anthropic_client.close()
finish_reason='stop'content="法国的首都巴黎。它不仅是政治和行政中心,还是全球艺术、时尚、美食和文化的重要中心。巴黎以埃菲尔铁塔、卢浮宫博物馆、巴黎圣母院和大香榭丽舍大街等标志性建筑闻名。" usage=RequestUsage(prompt_tokens=14, completion_tokens=73) cached=False logprobs=None thought=None
Ollama(实验性)
Ollama 是一个本地模型服务器,可在您的机器上本地运行模型。
注意
小型本地模型通常不如云端的大型模型功能强大。对于某些任务,它们的性能可能不如预期,输出结果也可能令人意外。
要使用Ollama,请安装Ollama扩展并使用OllamaChatCompletionClient。
pip install -U “autogen-ext[ollama]”
from autogen_core.models import UserMessage
from autogen_ext.models.ollama import OllamaChatCompletionClient
假设您的 Ollama 服务器在本地端口 11434 上运行。
ollama_model_client = OllamaChatCompletionClient(model=“llama3.2”)
response = await ollama_model_client.create([UserMessage(content=“What is the capital of France?”, source="user")])
print(response)
await ollama_model_client.close()
finish_reason=‘unknown’ content=‘The capital of France is Paris.’ usage=RequestUsage(prompt_tokens=32, completion_tokens=8) cached=False logprobs=None thought=None
Gemini(实验性)
Gemini 目前提供与 OpenAI 兼容的 API(测试版)。因此,您可以使用 OpenAIChatCompletionClient 与 Gemini API 配合使用。
注意
虽然一些模型提供商可能提供与 OpenAI 兼容的 API,但它们可能仍存在一些细微差异。例如,响应中的 finish_reason 字段可能与 OpenAI 不同。
from autogen_core.models import UserMessage
from autogen_ext.models.openai import OpenAIChatCompletionClient
model_client = OpenAIChatCompletionClient(
model="gemini-1.5-flash-8b",
# api_key="GEMINI_API_KEY",
)
response = await model_client.create([UserMessage(content=“What is the capital of France?”, source="user")])
print(response)
await model_client.close()
finish_reason=‘stop’ content=‘Paris\n’ usage=RequestUsage(prompt_tokens=7, completion_tokens=2) cached=False logprobs=None thought=None
此外,随着Gemini添加新模型,您可能需要通过model_info字段定义模型的功能。例如,要使用gemini-2.0-flash-lite或类似的新模型,您可以使用以下代码:
from autogen_core.models import UserMessage
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_core.models import ModelInfo
model_client = OpenAIChatCompletionClient(
model="gemini-2.0-flash-lite",
model_info=ModelInfo(vision=True, function_calling=True, json_output=True, family="unknown", structured_output=True)
# api_key="GEMINI_API_KEY",
)
response = await model_client.create([UserMessage(content=“What is the capital of France?”, source="user")])
print(response)
await model_client.close()
Llama API(实验性)
Llama API 是 Meta 的官方 API 服务。目前提供与 OpenAI 兼容的接口。因此您可以使用 OpenAIChatCompletionClient 配合 Llama API 进行调用。
该接口完全支持以下 OpenAI 客户端库功能:
聊天完成
模型选择
温度/采样
流式处理
图像理解
结构化输出(JSON 模式)
函数调用(工具)
from pathlib import Path
from autogen_core import Image
from autogen_core.models import UserMessage
from autogen_ext.models.openai import OpenAIChatCompletionClient
文本
model_client = OpenAIChatCompletionClient(
model="Llama-4-Scout-17B-16E-Instruct-FP8",
# api_key="LLAMA_API_KEY"
)
response = await model_client.create([UserMessage(content=“写一首诗给我”, source="用户")])
print(response)
await model_client.close()
图片
model_client = OpenAIChatCompletionClient(
model="Llama-4-Maverick-17B-128E-Instruct-FP8",
# api_key="LLAMA_API_KEY")
image = Image.from_file(Path(“test.png”))
response = await model_client.create([UserMessage(content=[“What is in this image”, image], source="user")])
print(response)
await model_client.close()
语义内核适配器
SKChatCompletionAdapter 允许您将语义内核模型客户端适配为 ChatCompletionClient,使其符合所需接口。
使用此适配器需安装相关提供商扩展。
可安装的扩展列表:
semantic-kernel-anthropic:安装此扩展以使用 Anthropic 模型。
semantic-kernel-google:安装此扩展以使用 Google Gemini 模型。
semantic-kernel-ollama:安装此扩展以使用 Ollama 模型。
semantic-kernel-mistralai:安装此扩展以使用 MistralAI 模型。
semantic-kernel-aws:安装此扩展以使用 AWS 模型。
semantic-kernel-hugging-face:安装此扩展以使用 Hugging Face 模型。
例如,要使用 Anthropic 模型,您需要安装 semantic-kernel-anthropic。
pip install “autogen-ext[semantic-kernel-anthropic]”
要使用此适配器,您需要创建一个语义内核模型客户端并将其传递给适配器。
例如,要使用 Anthropic 模型:
import os
from autogen_core.models import UserMessage
from autogen_ext.models.semantic_kernel import SKChatCompletionAdapter
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.anthropic import AnthropicChatCompletion, AnthropicChatPromptExecutionSettings
from semantic_kernel.memory.null_memory import NullMemory
sk_client = AnthropicChatCompletion(
ai_model_id="claude-3-5-sonnet-20241022",
api_key=os.environ[“ANTHROPIC_API_KEY”],
service_id="my-service-id", # 可选;用于在语义内核中定位特定服务
)
settings = AnthropicChatPromptExecutionSettings(
temperature=0.2,)
anthropic_model_client = SKChatCompletionAdapter(
sk_client, kernel=Kernel(memory=NullMemory()), prompt_settings=settings
)
直接调用模型。
model_result = await anthropic_model_client.create(
messages=[UserMessage(content=“法国的首都是什么?”, source="用户")]
)
print(model_result)
await anthropic_model_client.close()
finish_reason=‘stop’ content=‘法国的首都巴黎。它也是法国最大的城市,也是欧洲人口最多的都市区之一。’ usage=RequestUsage(prompt_tokens=0, completion_tokens=0) cached=False logprobs=None

浙公网安备 33010602011771号