다음을 통해 공유


의미 체계 커널 OpenAIAssistantAgent 탐색

중요합니다

이 기능은 릴리스 후보 단계에 있습니다. 이 단계의 기능은 거의 완전하고 일반적으로 안정적이지만 전체 일반 공급에 도달하기 전에 약간의 개선 또는 최적화가 필요할 수 있습니다.

이 설명과 관련된 자세한 API 설명서는 다음에서 확인할 수 있습니다.

에이전트는 현재 Java에서 사용할 수 없습니다.

도우미란?

OpenAI Assistant API는 고급 및 대화형 AI 기능을 위해 설계된 특수 인터페이스로, 개발자가 개인 설정된 다단계 작업 지향 에이전트를 만들 수 있도록 합니다. 간단한 대화형 교환에 중점을 둔 채팅 완료 API와 달리 Assistant API는 코드 인터프리터 및 파일 검색과 같은 추가 기능과 동적 목표 기반 상호 작용을 허용합니다.

개발 환경 준비

OpenAIAIAssistantAgent개발을 계속하려면 적절한 패키지로 개발 환경을 구성합니다.

프로젝트에 Microsoft.SemanticKernel.Agents.OpenAI 패키지를 추가합니다.

dotnet add package Microsoft.SemanticKernel.Agents.AzureAI --prerelease

Azure.Identity 패키지를 포함할 수도 있습니다.

dotnet add package Azure.Identity

선택적 semantic-kernel 종속성을 사용하여 패키지를 설치합니다.

pip install semantic-kernel[azure]

에이전트는 현재 Java에서 사용할 수 없습니다.

OpenAIAssistantAgent 만들기

OpenAIAssistant 만들려면 비동기적으로 처리되는 원격 서비스를 호출해야 합니다. 이를 관리하기 위해 OpenAIAssistantAgent 정적 팩터리 메서드를 통해 인스턴스화되어 프로세스가 비차단 방식으로 수행되도록 합니다. 이 메서드는 도우미가 완전히 초기화되고 사용할 준비가 되면 약속 또는 미래를 반환하는 비동기 호출의 복잡성을 추상화합니다.

AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant =
    await this.AssistantClient.CreateAssistantAsync(
        "<model name>",
        "<agent name>",
        instructions: "<agent instructions>");
OpenAIAssistantAgent agent = new(assistant, client);
from semantic_kernel.agents.open_ai import AzureAssistantAgent, OpenAIAssistantAgent

# Set up the client and model using Azure OpenAI Resources
client, model = AzureAssistantAgent.setup_resources()

# Define the assistant definition
definition = await client.beta.assistants.create(
    model=model,
    instructions="<instructions>",
    name="<agent name>",
)

# Create the AzureAssistantAgent instance using the client and the assistant definition
agent = AzureAssistantAgent(
    client=client,
    definition=definition,
)

# or

# Set up the client and model using OpenAI Resources
client, model = OpenAIAssistantAgent.setup_resources()

# Define the assistant definition
definition = await client.beta.assistants.create(
    model=model,
    instructions="<instructions>",
    name="<agent name>",
)

# Create the OpenAIAssistantAgent instance using the client and the assistant definition
agent = OpenAIAssistantAgent(
    client=client,
    definition=definition,
)

에이전트는 현재 Java에서 사용할 수 없습니다.

OpenAIAssistantAgent 가져오기

생성되면 도우미의 식별자는 해당 식별자를 통해 액세스할 수 있습니다. 이 식별자는 기존 도우미 정의에서 OpenAIAssistantAgent 만드는 데 사용할 수 있습니다.

.NET의 경우 에이전트 식별자는 에이전트에서 정의한 string 속성을 통해 노출됩니다.

AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant = await this.AssistantClient.GetAssistantAsync("<assistant id>");
OpenAIAssistantAgent agent = new(assistant, client);
# Using Azure OpenAI Resources

# Create the client using Azure OpenAI resources and configuration
client, model = AzureAssistantAgent.setup_resources()

# Create the assistant definition
definition = await client.beta.assistants.create(
    model=model,
    name="<agent name>",
    instructions="<instructions>",
)

# Store the assistant ID
assistant_id = definition.id

# Retrieve the assistant definition from the server based on the assistant ID
new_asst_definition = await client.beta.assistants.retrieve(assistant_id)

# Create the AzureAssistantAgent instance using the client and the assistant definition
agent = AzureAssistantAgent(
    client=client,
    definition=new_asst_definition,
)

에이전트는 현재 Java에서 사용할 수 없습니다.

OpenAIAssistantAgent을/를 사용하기

Assistant API모든 측면과 마찬가지로 대화는 원격으로 저장됩니다. 각 대화를 스레드라고 하며 고유 string 식별자로 식별됩니다. OpenAIAssistantAgent와의 상호 작용은 에이전트를 호출 시 지정해야 하는 이 특정 스레드 식별자에 관련되어 있습니다.

// Define agent
OpenAIAssistantAgent agent = ...;

// Create a thread for the agent conversation.
string threadId = await agent.CreateThreadAsync();

// Add a user message to the conversation
chat.Add(threadId, new ChatMessageContent(AuthorRole.User, "<user input>"));

// Generate the agent response(s)
await foreach (ChatMessageContent response in agent.InvokeAsync(threadId))
{
  // Process agent response(s)...
}

// Delete the thread when it is no longer needed
await agent.DeleteThreadAsync(threadId);
# Define agent
openai_agent = await ...

# Create a thread for the agent conversation
thread_id = await agent.create_thread()

# Add a user message to the conversation
await agent.add_chat_message(
  thread_id=thread_id, 
  message=ChatMessageContent(role=AuthorRole.USER, content="<user input>"),
)

# Generate the agent response(s)
async for response in agent.invoke(thread_id=thread_id):
  # process agent response(s)...

# Delete the thread when it is no longer needed
await agent.delete_thread(thread_id)

에이전트는 현재 Java에서 사용할 수 없습니다.

OpenAIAssistantAgent을 삭제하기

도우미의 정의는 원격으로 저장되므로 삭제되지 않으면 유지됩니다.
도우미 정의를 삭제하는 작업은 AssistantClient사용하여 직접 수행할 수 있습니다.

참고: 삭제된 후 에이전트 인스턴스를 사용하려고 하면 서비스 예외가 발생합니다.

.NET의 경우 에이전트 식별자는 에이전트가 정의한 속성인 string를 통해 Agent.Id에서 노출됩니다.

AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant = await this.AssistantClient.DeleteAssistantAsync("<assistant id>");
await agent.delete()

is_deleted = agent._is_deleted

에이전트는 현재 Java에서 사용할 수 없습니다.

사용 방법

OpenAIAssistantAgent대한 엔드 투 엔드 예제는 다음을 참조하세요.