Kódértelmező

A Kódértelmező lehetővé teszi az ügynökök számára a kód írását és végrehajtását tesztkörnyezetben. Ez hasznos adatelemzéshez, matematikai számításokhoz, fájlfeldolgozáshoz és a kódvégrehajtás előnyeit élvező egyéb feladatokhoz.

Megjegyzés:

A kódértelmező rendelkezésre állása az alapul szolgáló ügynök szolgáltatójától függ. A szolgáltatóspecifikus támogatásért tekintse meg a Szolgáltatók áttekintése című témakört .

Warning

A kód, a végrehajtási kimenet és a létrehozott fájlok továbbra is modell által generált és nem megbízhatóak maradnak, még akkor is, ha a végrehajtás egy üzemeltetett tesztkörnyezetben történik. Ellenőrizze az eredményeket, mielőtt döntéseket hoz, megjelenítené őket, vagy átadná őket egy másik rendszernek.

Az alábbi példa bemutatja, hogyan hozhat létre ügynököt a Kódértelmező eszközzel, és hogyan olvashatja be a létrehozott kimenetet:

Ügynök létrehozása a Kódértelmezővel

using System;
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

// Requires: dotnet add package Microsoft.Agents.AI.Foundry --prerelease
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")
    ?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-4o-mini";

// Create an agent with the code interpreter hosted tool
AIAgent agent = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential())
    .AsAIAgent(
        model: deploymentName,
        instructions: "You are a helpful assistant that can write and execute Python code.",
        tools: [new CodeInterpreterToolDefinition()]);

var response = await agent.RunAsync("Calculate the factorial of 100 using code.");
Console.WriteLine(response);

Warning

DefaultAzureCredential a fejlesztéshez kényelmes, de a termelési környezetben gondos megfontolást igényel. Éles környezetben fontolja meg egy adott hitelesítő adat (pl. ManagedIdentityCredential) használatát a késési problémák elkerülése, a hitelesítő adatok nem szándékos próbálgatásának és a tartalék mechanizmusokból eredő esetleges biztonsági kockázatok elkerülése érdekében.

Kódkimenet olvasása

// Inspect code interpreter output from the response
foreach (var message in response.Messages)
{
    foreach (var content in message.Contents)
    {
        if (content is CodeInterpreterContent codeContent)
        {
            Console.WriteLine($"Code:\n{codeContent.Code}");
            Console.WriteLine($"Output:\n{codeContent.Output}");
        }
    }
}

Az alábbi példa bemutatja, hogyan hozhat létre ügynököt a Kódértelmező eszközzel:

# Copyright (c) Microsoft. All rights reserved.

import asyncio

from agent_framework import (
    Agent,
    Content,
)
from agent_framework.openai import OpenAIChatClient

"""
OpenAI Chat Client with Code Interpreter Example

This sample demonstrates using get_code_interpreter_tool() with OpenAI Chat Client
for Python code execution and mathematical problem solving.
"""


async def main() -> None:
    """Example showing how to use the code interpreter tool with OpenAI Chat."""
    print("=== OpenAI Chat Client Agent with Code Interpreter Example ===")

    client = OpenAIChatClient()
    agent = Agent(
        client=client,
        instructions="You are a helpful assistant that can write and execute Python code to solve problems.",
        tools=client.get_code_interpreter_tool(),
    )

    query = "Use code to get the factorial of 100?"
    print(f"User: {query}")
    result = await agent.run(query)
    print(f"Result: {result}\n")

    for message in result.messages:
        code_blocks = [c for c in message.contents if c.type == "code_interpreter_tool_call"]
        outputs = [c for c in message.contents if c.type == "code_interpreter_tool_result"]

        if code_blocks:
            code_inputs = code_blocks[0].inputs or []
            for content in code_inputs:
                if isinstance(content, Content) and content.type == "text":
                    print(f"Generated code:\n{content.text}")
                    break
        if outputs:
            print("Execution outputs:")
            for out in outputs[0].outputs or []:
                if isinstance(out, Content) and out.type == "text":
                    print(out.text)


if __name__ == "__main__":
    asyncio.run(main())

Jelenlegi OpenAI-kódértelmező minta

A kódtárban található jelenlegi OpenAI kód-értelmező minta a generált kód és a végleges végrehajtási kimenet vizsgálatát mutatja OpenAIChatClient be:

async def main() -> None:
    """Example showing how to use the code interpreter tool with OpenAI Chat."""
    print("=== OpenAI Chat Client Agent with Code Interpreter Example ===")

    client = OpenAIChatClient()
    agent = Agent(
        client=client,
        instructions="You are a helpful assistant that can write and execute Python code to solve problems.",
        tools=client.get_code_interpreter_tool(),
    )

    query = "Use code to get the factorial of 100?"
    print(f"User: {query}")
    result = await agent.run(query)
    print(f"Result: {result}\n")

    for message in result.messages:
        code_blocks = [c for c in message.contents if c.type == "code_interpreter_tool_call"]
        outputs = [c for c in message.contents if c.type == "code_interpreter_tool_result"]

        if code_blocks:
            code_inputs = code_blocks[0].inputs or []
            for content in code_inputs:
                if isinstance(content, Content) and content.type == "text":
                    print(f"Generated code:\n{content.text}")
                    break
        if outputs:
            print("Execution outputs:")
            for out in outputs[0].outputs or []:
                if isinstance(out, Content) and out.type == "text":
                    print(out.text)


if __name__ == "__main__":
    asyncio.run(main())

Kódértelmező

Ez a hostedtool.CodeInterpreter típus lehetővé teszi a kiszolgálóoldali kódvégrehajtást, ha olyan szolgáltatót használ, amely támogatja azt.

import "github.com/microsoft/agent-framework-go/tool/hostedtool"

codeInterpreter := &hostedtool.CodeInterpreter{}

a := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
    Config: agent.Config{
        Tools: []tool.Tool{codeInterpreter},
    },
})

Az ügynök futtatása és a kód kimenetének olvasása

Az Foundry vagy az OpenAI-válaszok segítségével vizsgálja meg CodeInterpreterToolCallContent a létrehozott kódot és CodeInterpreterToolResultContent a végrehajtási kimenetet. A létrehozott Python kód adattartalomként van tárolva, ezért dekódolja a kóddalDataContent.Bytes.

import (
    "context"
    "fmt"

    "github.com/microsoft/agent-framework-go/message"
)

response, err := a.RunText(
    context.Background(),
    "Calculate the factorial of 100 using code.",
).Collect()
if err != nil {
    panic(err)
}
fmt.Println(response.String())

for content := range response.Contents() {
    switch value := content.(type) {
    case *message.CodeInterpreterToolCallContent:
        for _, input := range value.Inputs {
            if data, ok := input.(*message.DataContent); ok {
                code, err := data.Bytes()
                if err != nil {
                    panic(err)
                }
                fmt.Printf("Code:\n%s\n", code)
            }
        }
    case *message.CodeInterpreterToolResultContent:
        for _, output := range value.Outputs {
            switch result := output.(type) {
            case *message.TextContent:
                fmt.Println(result.Text)
            case *message.URIContent:
                fmt.Println(result.URI)
            }
        }
    }
}

A válasz tartalmazza a választ, valamint a szolgáltatás által visszaadott kód- vagy végrehajtási kimenetet. A létrehozott fájlok esetében az OpenAI kódértelmező letölti a minta idézőjeleket, és letölti a tárolóazonosítóval és a fájlazonosítóval rendelkező fájlokat.

Megjegyzés:

A kódértelmező egy üzemeltetett eszköz – a kódvégrehajtás az AI szolgáltatás oldalán történik, nem helyileg.

Következő lépések