의미 체계 커널 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
대한 엔드 투 엔드 예제는 다음을 참조하세요.
-
사용 방법:
OpenAIAssistantAgent
코드 인터프리터 -
OpenAIAssistantAgent