Modelle#
In vielen Fällen benötigen Agenten Zugriff auf LLM-Modell-Dienste wie OpenAI, Azure OpenAI oder lokale Modelle. Da es viele verschiedene Anbieter mit unterschiedlichen APIs gibt, implementiert autogen-core ein Protokoll für Modellclients und autogen-ext implementiert eine Reihe von Modellclients für beliebte Modell-Dienste. AgentChat kann diese Modellclients verwenden, um mit Modelldiensten zu interagieren.
Dieser Abschnitt bietet einen kurzen Überblick über verfügbare Modellclients. Weitere Details zur direkten Verwendung finden Sie unter Model Clients in der Core API-Dokumentation.
Hinweis
Siehe ChatCompletionCache für einen Caching-Wrapper zur Verwendung mit den folgenden Clients.
Modellaufrufe protokollieren#
AutoGen verwendet das Standard-Python-Logging-Modul, um Ereignisse wie Modellaufrufe und Antworten zu protokollieren. Der Loggername ist autogen_core.EVENT_LOGGER_NAME und der Ereignistyp ist 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#
Um auf OpenAI-Modelle zuzugreifen, installieren Sie die openai-Erweiterung, mit der Sie den OpenAIChatCompletionClient verwenden können.
pip install "autogen-ext[openai]"
Sie müssen auch einen API-Schlüssel von OpenAI erhalten.
from autogen_ext.models.openai import OpenAIChatCompletionClient
openai_model_client = OpenAIChatCompletionClient(
model="gpt-4o-2024-08-06",
# api_key="sk-...", # Optional if you have an OPENAI_API_KEY environment variable set.
)
Um den Modellclient zu testen, können Sie den folgenden Code verwenden
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='The capital of France is Paris.', usage=RequestUsage(prompt_tokens=15, completion_tokens=7), cached=False, logprobs=None)
Hinweis
Sie können diesen Client mit Modellen verwenden, die auf OpenAI-kompatiblen Endpunkten gehostet werden, wir haben diese Funktionalität jedoch nicht getestet. Weitere Informationen finden Sie unter OpenAIChatCompletionClient.
Azure OpenAI#
Installieren Sie ebenso die Erweiterungen azure und openai, um den AzureOpenAIChatCompletionClient zu verwenden.
pip install "autogen-ext[openai,azure]"
Um den Client zu verwenden, müssen Sie Ihre Deployment-ID, den Azure Cognitive Services-Endpunkt, die API-Version und die Modellfunktionen angeben. Zur Authentifizierung können Sie entweder einen API-Schlüssel oder eine Azure Active Directory (AAD)-Token-Anmeldeinformation angeben.
Der folgende Code-Schnipsel zeigt, wie die AAD-Authentifizierung verwendet wird. Die verwendete Identität muss die Rolle Cognitive Services OpenAI User zugewiesen bekommen haben.
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
# Create the token provider
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, # Optional if you choose key-based authentication.
# api_key="sk-...", # For key-based authentication.
)
result = await az_model_client.create([UserMessage(content="What is the capital of France?", source="user")])
print(result)
await az_model_client.close()
Weitere Informationen zur direkten Verwendung des Azure-Clients oder mehr Informationen finden Sie hier.
Azure AI Foundry#
Azure AI Foundry (früher Azure AI Studio) bietet Modelle, die auf Azure gehostet werden. Um diese Modelle zu verwenden, nutzen Sie den AzureAIChatCompletionClient.
Sie müssen das azure-Extra installieren, um diesen Client zu verwenden.
pip install "autogen-ext[azure]"
Unten sehen Sie ein Beispiel für die Verwendung dieses Clients mit dem Phi-4-Modell vom GitHub Marketplace.
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.github.ai/inference",
# To authenticate with the model you will need to generate a personal access token (PAT) in your GitHub settings.
# Create your PAT token by following instructions here: 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 (experimentell)#
Um den AnthropicChatCompletionClient zu verwenden, müssen Sie das anthropic-Extra installieren. Intern verwendet er das Python-SDK von anthropic, um auf die Modelle zuzugreifen. Sie müssen auch einen API-Schlüssel von Anthropic erhalten.
# !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="The capital of France is Paris. It's not only the political and administrative capital but also a major global center for art, fashion, gastronomy, and culture. Paris is known for landmarks such as the Eiffel Tower, the Louvre Museum, Notre-Dame Cathedral, and the Champs-Élysées." usage=RequestUsage(prompt_tokens=14, completion_tokens=73) cached=False logprobs=None thought=None
Ollama (experimentell)#
Ollama ist ein lokaler Modellserver, der Modelle lokal auf Ihrem Rechner ausführen kann.
Hinweis
Kleine lokale Modelle sind typischerweise nicht so leistungsfähig wie größere Modelle in der Cloud. Bei einigen Aufgaben sind sie möglicherweise nicht so gut geeignet und die Ausgabe kann überraschend sein.
Um Ollama zu verwenden, installieren Sie die ollama-Erweiterung und verwenden Sie den OllamaChatCompletionClient.
pip install -U "autogen-ext[ollama]"
from autogen_core.models import UserMessage
from autogen_ext.models.ollama import OllamaChatCompletionClient
# Assuming your Ollama server is running locally on port 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 (experimentell)#
Gemini bietet derzeit eine OpenAI-kompatible API (Beta). Sie können also den OpenAIChatCompletionClient mit der Gemini API verwenden.
Hinweis
Obwohl einige Modell-Anbieter OpenAI-kompatible APIs anbieten, können sie dennoch geringfügige Unterschiede aufweisen. Zum Beispiel kann das Feld finish_reason in der Antwort abweichen.
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
Außerdem müssen Sie möglicherweise die Modellfunktionen über das Feld model_info definieren, wenn Gemini neue Modelle hinzufügt. Zum Beispiel, um gemini-2.0-flash-lite oder ein ähnliches neues Modell zu verwenden, können Sie den folgenden Code verwenden
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 (experimentell)#
Llama API ist das eigene API-Angebot von Meta. Es bietet derzeit einen OpenAI-kompatiblen Endpunkt. Sie können also den OpenAIChatCompletionClient mit der Llama API verwenden.
Dieser Endpunkt unterstützt die folgenden Features der OpenAI-Client-Bibliothek vollständig
Chat-Vervollständigungen
Modellauswahl
Temperatur/Sampling
Streaming
Bildverständnis
Strukturierte Ausgabe (JSON-Modus)
Funktionsaufrufe (Tools)
from pathlib import Path
from autogen_core import Image
from autogen_core.models import UserMessage
from autogen_ext.models.openai import OpenAIChatCompletionClient
# Text
model_client = OpenAIChatCompletionClient(
model="Llama-4-Scout-17B-16E-Instruct-FP8",
# api_key="LLAMA_API_KEY"
)
response = await model_client.create([UserMessage(content="Write me a poem", source="user")])
print(response)
await model_client.close()
# Image
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()
Semantic Kernel Adapter#
Der SKChatCompletionAdapter ermöglicht es Ihnen, Semantic Kernel-Modellclients als ChatCompletionClient zu verwenden, indem Sie sie an die erforderliche Schnittstelle anpassen.
Sie müssen die entsprechenden Provider-Extras installieren, um diesen Adapter zu verwenden.
Die Liste der installierbaren Extras
semantic-kernel-anthropic: Installieren Sie dieses Extra, um Anthropic-Modelle zu verwenden.semantic-kernel-google: Installieren Sie dieses Extra, um Google Gemini-Modelle zu verwenden.semantic-kernel-ollama: Installieren Sie dieses Extra, um Ollama-Modelle zu verwenden.semantic-kernel-mistralai: Installieren Sie dieses Extra, um MistralAI-Modelle zu verwenden.semantic-kernel-aws: Installieren Sie dieses Extra, um AWS-Modelle zu verwenden.semantic-kernel-hugging-face: Installieren Sie dieses Extra, um Hugging Face-Modelle zu verwenden.
Um beispielsweise Anthropic-Modelle zu verwenden, müssen Sie semantic-kernel-anthropic installieren.
# pip install "autogen-ext[semantic-kernel-anthropic]"
Um diesen Adapter zu verwenden, müssen Sie einen Semantic Kernel-Modellclient erstellen und ihn an den Adapter übergeben.
Zum Beispiel die Verwendung des Anthropic-Modells
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", # Optional; for targeting specific services within Semantic Kernel
)
settings = AnthropicChatPromptExecutionSettings(
temperature=0.2,
)
anthropic_model_client = SKChatCompletionAdapter(
sk_client, kernel=Kernel(memory=NullMemory()), prompt_settings=settings
)
# Call the model directly.
model_result = await anthropic_model_client.create(
messages=[UserMessage(content="What is the capital of France?", source="User")]
)
print(model_result)
await anthropic_model_client.close()
finish_reason='stop' content='The capital of France is Paris. It is also the largest city in France and one of the most populous metropolitan areas in Europe.' usage=RequestUsage(prompt_tokens=0, completion_tokens=0) cached=False logprobs=None
Lesen Sie mehr über den Semantic Kernel Adapter.