共用方式為


探索語意核心開放式 AI 助理代理程式 (實驗性)

警告

語意核心代理程式架構是實驗性的,仍在開發中,而且可能會變更。

如需此討論的詳細 API 檔,請參閱:

代理程式目前無法在Java中使用。

什麼是助理?

OpenAI Assistant API 是專為更進階和互動式 AI 功能而設計的特製化介面,可讓開發人員建立個人化和多步驟工作導向的代理程式。 與專注於簡單交談交換的聊天完成 API 不同,小幫手 API 允許動態、目標導向的互動與程式代碼解釋器和檔案搜尋等其他功能互動。

建立 開放式 AI 助理代理程式

建立 Open AI Assistant 需要叫用以異步方式處理的遠端服務。 為了管理此情況, Open AI Assistant 代理程式 會透過靜態處理站方法具現化,以確保程式以非封鎖方式發生。 這個方法會抽象化異步呼叫的複雜度,一旦助理完全初始化並可供使用,就會傳回承諾或未來。

OpenAIAssistantAgent agent =
    await OpenAIAssistantAgent.CreateAsync(
        OpenAIClientProvider.ForAzureOpenAI(/*<...service configuration>*/),
        new OpenAIAssistantDefinition("<model name>")
        {
          Name = "<agent name>",
          Instructions = "<agent instructions>",
        },
        new Kernel());
azure_agent = await AzureAssistantAgent.create(
    kernel=kernel, 
    service_id=service_id, 
    name="<agent name>", 
    instructions="<agent instructions>"
)

# or

openai_agent = await OpenAIAssistantAgent.create(
    kernel=kernel, 
    service_id=service_id, 
    name="<agent name>", 
    instructions="<agent instructions>"
)

代理程式目前無法在Java中使用。

擷取 Open AI Assistant Agent

建立之後,小幫手的標識符可能會透過其標識符進行存取。 此標識碼可用來從現有的助理定義建立 Open AI Assistant Agent

針對 .NET,代理程式識別碼會透過任何代理程式所定義的 屬性公開為 string

OpenAIAssistantAgent agent =
    await OpenAIAssistantAgent.RetrieveAsync(
        OpenAIClientProvider.ForAzureOpenAI(/*<...service configuration>*/),
        "<your agent id>",
        new Kernel());
agent = await OpenAIAssistantAgent.retrieve(id=agent_id, kernel=kernel)

# or

agent = await AzureAssistantAgent.retrieve(id=agent_id, kernel=kernel)

代理程式目前無法在Java中使用。

使用 Open AI Assistant Agent

如同小幫手 API 的所有層面,交談會從遠端儲存。 每個交談稱為線程,並由唯string標識符識別。 與 OpenAI Assistant Agent 的互動會系結至呼叫代理程式時必須指定的特定線程標識碼/

// 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中使用。

刪除 Open AI Assistant Agent

由於助理的定義是遠端儲存的,因此它支援自我刪除的功能。 這可讓代理程式在不再需要時從系統中移除。

注意:嘗試在刪除後使用代理程序實例會導致例外狀況。

針對 .NET,代理程式識別碼會透過Agent.Id任何代理程式所定義的 屬性公開為 string

// Perform the deletion
await agent.DeleteAsync();

// Inspect whether an agent has been deleted
bool isDeleted = agent.IsDeleted();
await agent.delete()

is_deleted = agent._is_deleted

代理程式目前無法在Java中使用。

作法

如需 Open AI Assistant Agent 的端對端範例,請參閱: