autogen_ext.models.semantic_kernel#

class SKChatCompletionAdapter(sk_client: ChatCompletionClientBase, kernel: Kernel | None = None, prompt_settings: PromptExecutionSettings | None = None, model_info: ModelInfo | None = None, service_id: str | None = None)[Quelle]#

Bases: ChatCompletionClient

SKChatCompletionAdapter ist ein Adapter, der es ermöglicht, Semantic Kernel Model Clients als Autogen ChatCompletion Clients zu verwenden. Dies ermöglicht die nahtlose Integration von Semantic Kernel Connectoren (z.B. Azure OpenAI, Google Gemini, Ollama etc.) in Autogen Agenten, die auf einer ChatCompletionClient-Schnittstelle basieren.

Durch die Nutzung dieses Adapters können Sie

  • Einen Kernel und einen beliebigen unterstützten Semantic Kernel ChatCompletionClientBase Connector übergeben.

  • Tools (über Autogen Tool oder ToolSchema) für Funktionsaufrufe während der Chat-Vervollständigung bereitstellen.

  • Antworten streamen oder sie in einer einzelnen Anfrage abrufen.

  • Prompt-Einstellungen bereitstellen, um das Verhalten der Chat-Vervollständigung entweder global über den Konstruktor

    oder auf Anfragebasis über das extra_create_args Dictionary zu steuern.

Die Liste der zusätzlich installierbaren Pakete

  • semantic-kernel-anthropic: Installieren Sie dieses Paket, um Anthropic-Modelle zu verwenden.

  • semantic-kernel-google: Installieren Sie dieses Paket, um Google Gemini-Modelle zu verwenden.

  • semantic-kernel-ollama: Installieren Sie dieses Paket, um Ollama-Modelle zu verwenden.

  • semantic-kernel-mistralai: Installieren Sie dieses Paket, um MistralAI-Modelle zu verwenden.

  • semantic-kernel-aws: Installieren Sie dieses Paket, um AWS-Modelle zu verwenden.

  • semantic-kernel-hugging-face: Installieren Sie dieses Paket, um Hugging Face-Modelle zu verwenden.

Parameter:
  • sk_client (ChatCompletionClientBase) – Der Semantic Kernel Client, der umschlossen werden soll (z.B. AzureChatCompletion, GoogleAIChatCompletion, OllamaChatCompletion).

  • kernel (Optional[Kernel]) – Die Semantic Kernel-Instanz, die zur Ausführung von Anfragen verwendet werden soll. Wenn nicht angegeben, muss für jede Anfrage ein Kernel in `extra_create_args` übergeben werden.

  • prompt_settings (Optional[PromptExecutionSettings]) – Standardmäßige Prompt-Ausführungseinstellungen. Kann pro Anfrage überschrieben werden.

  • model_info (Optional[ModelInfo]) – Informationen über die Fähigkeiten des Modells.

  • service_id (Optional[str]) – Optionale Service-ID.

Examples

Anthropic-Modelle mit Funktionsaufrufen

pip install "autogen-ext[semantic-kernel-anthropic]"
import asyncio
import os

from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
from autogen_core.models import ModelFamily, 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


async def get_weather(city: str) -> str:
    """Get the weather for a city."""
    return f"The weather in {city} is 75 degrees."


async def main() -> None:
    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,
    )

    model_client = SKChatCompletionAdapter(
        sk_client,
        kernel=Kernel(memory=NullMemory()),
        prompt_settings=settings,
        model_info={
            "function_calling": True,
            "json_output": True,
            "vision": True,
            "family": ModelFamily.CLAUDE_3_5_SONNET,
            "structured_output": True,
        },
    )

    # Call the model directly.
    response = await model_client.create([UserMessage(content="What is the capital of France?", source="test")])
    print(response)

    # Create an assistant agent with the model client.
    assistant = AssistantAgent(
        "assistant", model_client=model_client, system_message="You are a helpful assistant.", tools=[get_weather]
    )
    # Call the assistant with a task.
    await Console(assistant.run_stream(task="What is the weather in Paris and London?"))


asyncio.run(main())

Google Gemini-Modelle mit Funktionsaufrufen

pip install "autogen-ext[semantic-kernel-google]"
import asyncio
import os

from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
from autogen_core.models import UserMessage, ModelFamily
from autogen_ext.models.semantic_kernel import SKChatCompletionAdapter
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.google.google_ai import (
    GoogleAIChatCompletion,
    GoogleAIChatPromptExecutionSettings,
)
from semantic_kernel.memory.null_memory import NullMemory


def get_weather(city: str) -> str:
    """Get the weather for a city."""
    return f"The weather in {city} is 75 degrees."


async def main() -> None:
    sk_client = GoogleAIChatCompletion(
        gemini_model_id="gemini-2.0-flash",
        api_key=os.environ["GEMINI_API_KEY"],
    )
    settings = GoogleAIChatPromptExecutionSettings(
        temperature=0.2,
    )

    kernel = Kernel(memory=NullMemory())

    model_client = SKChatCompletionAdapter(
        sk_client,
        kernel=kernel,
        prompt_settings=settings,
        model_info={
            "family": ModelFamily.GEMINI_2_0_FLASH,
            "function_calling": True,
            "json_output": True,
            "vision": True,
            "structured_output": True,
        },
    )

    # Call the model directly.
    model_result = await model_client.create(
        messages=[UserMessage(content="What is the capital of France?", source="User")]
    )
    print(model_result)

    # Create an assistant agent with the model client.
    assistant = AssistantAgent(
        "assistant", model_client=model_client, tools=[get_weather], system_message="You are a helpful assistant."
    )
    # Call the assistant with a task.
    stream = assistant.run_stream(task="What is the weather in Paris and London?")
    await Console(stream)


asyncio.run(main())

Ollama-Modelle

pip install "autogen-ext[semantic-kernel-ollama]"
import asyncio

from autogen_agentchat.agents import AssistantAgent
from autogen_core.models import UserMessage
from autogen_ext.models.semantic_kernel import SKChatCompletionAdapter
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.ollama import OllamaChatCompletion, OllamaChatPromptExecutionSettings
from semantic_kernel.memory.null_memory import NullMemory


async def main() -> None:
    sk_client = OllamaChatCompletion(
        host="https://:11434",
        ai_model_id="llama3.2:latest",
    )
    ollama_settings = OllamaChatPromptExecutionSettings(
        options={"temperature": 0.5},
    )

    model_client = SKChatCompletionAdapter(
        sk_client, kernel=Kernel(memory=NullMemory()), prompt_settings=ollama_settings
    )

    # Call the model directly.
    model_result = await model_client.create(
        messages=[UserMessage(content="What is the capital of France?", source="User")]
    )
    print(model_result)

    # Create an assistant agent with the model client.
    assistant = AssistantAgent("assistant", model_client=model_client)
    # Call the assistant with a task.
    result = await assistant.run(task="What is the capital of France?")
    print(result)


asyncio.run(main())
async create(messages: Sequence[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]], *, tools: Sequence[Tool | ToolSchema] = [], tool_choice: Tool | Literal['auto', 'required', 'none'] = 'auto', json_output: bool | type[BaseModel] | None = None, extra_create_args: Mapping[str, Any] = {}, cancellation_token: CancellationToken | None = None) CreateResult[Quelle]#

Erstellt eine Chat-Vervollständigung unter Verwendung des Semantic Kernel Clients.

Das extra_create_args Dictionary kann zwei spezielle Schlüssel enthalten

  1. „kernel“ (optional)

    Eine Instanz von semantic_kernel.Kernel, die zur Ausführung der Anfrage verwendet wird. Wenn sie weder im Konstruktor noch in `extra_create_args` angegeben wird, wird ein `ValueError` ausgelöst.

  2. „prompt_execution_settings“ (optional)

    Eine Instanz einer Unterklasse von PromptExecutionSettings, die dem zugrunde liegenden Semantic Kernel Client entspricht (z.B. AzureChatPromptExecutionSettings, GoogleAIChatPromptExecutionSettings). Wenn sie nicht angegeben wird, werden die Standard-Prompt-Einstellungen des Adapters verwendet.

Parameter:
  • messages – Die Liste der LLM-Nachrichten, die gesendet werden sollen.

  • tools – Die Tools, die während des Chats aufgerufen werden können.

  • json_output – Ob das Modell JSON zurückgeben soll.

  • extra_create_args – Zusätzliche Argumente zur Steuerung des Chat-Vervollständigungsverhaltens.

  • cancellation_token – Token, das die Abbrechung der Anfrage ermöglicht.

Gibt zurück:

CreateResult – Das Ergebnis der Chat-Vervollständigung.

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

Erstellt eine gestreamte Chat-Vervollständigung unter Verwendung des Semantic Kernel Clients.

Das extra_create_args Dictionary kann zwei spezielle Schlüssel enthalten

  1. „kernel“ (optional)

    Eine Instanz von semantic_kernel.Kernel, die zur Ausführung der Anfrage verwendet wird. Wenn sie weder im Konstruktor noch in `extra_create_args` angegeben wird, wird ein `ValueError` ausgelöst.

  2. „prompt_execution_settings“ (optional)

    Eine Instanz einer Unterklasse von PromptExecutionSettings, die dem zugrunde liegenden Semantic Kernel Client entspricht (z.B. AzureChatPromptExecutionSettings, GoogleAIChatPromptExecutionSettings). Wenn sie nicht angegeben wird, werden die Standard-Prompt-Einstellungen des Adapters verwendet.

Parameter:
  • messages – Die Liste der LLM-Nachrichten, die gesendet werden sollen.

  • tools – Die Tools, die während des Chats aufgerufen werden können.

  • json_output – Ob das Modell JSON zurückgeben soll.

  • extra_create_args – Zusätzliche Argumente zur Steuerung des Chat-Vervollständigungsverhaltens.

  • cancellation_token – Token, das die Abbrechung der Anfrage ermöglicht.

Gibt:

Union[str, CreateResult] – Entweder ein String-Chunk der Antwort oder ein CreateResult, das Funktionsaufrufe enthält.

async close() None[Quelle]#
actual_usage() RequestUsage[Quelle]#
total_usage() RequestUsage[Quelle]#
count_tokens(messages: Sequence[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]], *, tools: Sequence[Tool | ToolSchema] = []) int[Quelle]#
remaining_tokens(messages: Sequence[Annotated[SystemMessage | UserMessage | AssistantMessage | FunctionExecutionResultMessage, FieldInfo(annotation=NoneType, required=True, discriminator='type')]], *, tools: Sequence[Tool | ToolSchema] = []) int[Quelle]#
property model_info: ModelInfo#
property capabilities: ModelInfo#