各セッション ID をアプリケーションのデータストアに保存します。この ID を使って、セッションの現在の状態を取得したり、エージェントからのリクエストに対応したり、セッションを削除したりできます。
プロジェクト内のセッションを一覧表示して、過去の作業を確認できます。追加のページは、SDK のページネーションヘルパーを使って取得します。
1
2
3
4
5
6
7
8
9import OpenAI from "openai";
const client = new OpenAI();
let page = await client.beta.agents.sessions.list({ limit: 20 });
console.log(page.data);
if (page.hasNextPage()) {
page = await page.getNextPage();
console.log(page.data);
}
1
2
3
4
5
6
7
8from openai import OpenAI
client = OpenAI()
page = client.beta.agents.sessions.list(limit=20)
print(page.to_json())
if page.has_next_page():
page = page.get_next_page()
print(page.to_json())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
)
ctx := context.Background()
client := openai.NewClient()
result, err := client.Beta.Agents.Sessions.List(ctx,
openai.BetaAgentSessionListParams{Limit: openai.Int(20)})
if err != nil {
panic(err)
}
fmt.Println(result.Data)
if result.HasMore {
result, err = result.GetNextPage()
if err != nil {
panic(err)
}
fmt.Println(result.Data)
}
1
2
3
4
5
6
7
8
9
10
11
12import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.beta.agents.sessions.SessionListParams;
OpenAIClient client = OpenAIOkHttpClient.fromEnv();
var result =
client.beta().agents().sessions().list(SessionListParams.builder().limit(20L).build());
System.out.println(result.items());
if (result.hasNextPage()) {
result = result.nextPage();
System.out.println(result.items());
}
1
2
3
4
5
6
7
8
9require "openai"
client = OpenAI::Client.new
result = client.beta.agents.sessions.list(limit: 20)
puts result.data
if result.next_page?
result = result.next_page
puts result.data
end
1
2
3
4
5
6
7
8
9
10
11
12page=$(curl -sS --fail-with-body "https://api.openai.com/v1/agents/sessions?limit=20&order=desc" \
-H "OpenAI-Beta: agents=v1" \
-H "Authorization: Bearer $OPENAI_API_KEY")
after=$(printf '%s' "$page" | jq -r 'select(.has_more) | .last_id // empty')
if [ -n "$after" ]; then
curl --get "https://api.openai.com/v1/agents/sessions" \
-H "OpenAI-Beta: agents=v1" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
--data-urlencode "after=$after" \
--data-urlencode "limit=20"
fi
セッションを取得すると、ステータス、エージェントの構成、環境、required_actions を確認できます。API クライアントと会話のセッション ID を渡します。
1
2
3
4// Pass your saved session ID to this helper.
async function retrieveSession(client, sessionId) {
return client.beta.agents.sessions.retrieve(sessionId);
}
1
2
3# Pass your saved session ID to this helper.
def retrieve_session(client: OpenAI, session_id: str):
return client.beta.agents.sessions.retrieve(session_id)
1
2
3
4// Pass your saved session ID to this helper.
func retrieveSession(ctx context.Context, client *openai.Client, sessionID string) (*openai.AgentSession, error) {
return client.Beta.Agents.Sessions.Get(ctx, sessionID)
}
1
2
3
4
5
6
7
8// Pass your saved session ID to this helper.
public static AgentSession retrieveSession(OpenAIClient client, String sessionId) {
return client
.beta()
.agents()
.sessions()
.retrieve(SessionRetrieveParams.builder().sessionId(sessionId).build());
}
1
2
3
4# Pass your saved session ID to this helper.
def retrieve_session(client, session_id)
client.beta.agents.sessions.retrieve(session_id)
end
1
2
3
4curl \
"https://api.openai.com/v1/agents/sessions/$session_id" \
-H "OpenAI-Beta: agents=v1" \
-H "Authorization: Bearer $OPENAI_API_KEY"
レスポンスの完全なスキーマについては、セッション取得のリファレンスを参照してください。
ステータスが requires_action のセッションでは、作業を続行する前にアプリケーション側での対応が必要です。agent.session.requires_action を受信したら、セッションを取得して required_actions の各エントリを確認します。
function_call: name で指定された関数を、その arguments を使って実行します。アクションの turn_id と call_id を使い、同じセッションで結果を返します。関数ツールを参照してください。
environment_connection: environment_id で指定された環境を接続します。環境の接続を参照してください。
イベントは、アプリケーションが確認すべきタイミングを知らせます。取得したセッションからは、必要な対応がわかります。再起動やストリームの切断後は、セッションを取得して未処理のアクションを確認します。対応後もイベントの監視を続け、ターンの結果を確認します。
保存済みのメッセージ、ツール呼び出し、ターンの結果については、アイテムとターンの取得を参照してください。どのエージェントがコマンドを実行したかを確認するには、委任の確認を参照してください。
アプリケーションでセッションが不要になったら削除します。削除すると、セッションは API から取り除かれます。物理的なクリーンアップは、その後も非同期で続く場合があります。
1
2
3
4
5
6
7
8
9// Replace the illustrative IDs and URLs below with your own resource values.
import OpenAI from "openai";
async function deleteSession(client, sessionId) {
return client.beta.agents.sessions.delete(sessionId);
}
const result = await deleteSession(new OpenAI(), "sess_123");
console.log(result);
1
2
3
4
5
6
7
8
9
10
11
12# Replace the illustrative IDs and URLs below with your own resource values.
from openai import OpenAI
def delete_session(client: OpenAI, session_id: str):
return client.beta.agents.sessions.delete(session_id)
if __name__ == "__main__":
result = delete_session(OpenAI(), "sess_123")
print(result.to_json())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22// Replace the illustrative IDs and URLs below with your own resource values.
package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
)
func deleteSession(ctx context.Context, client *openai.Client, sessionID string) (*openai.AgentSessionDeleted, error) {
return client.Beta.Agents.Sessions.Delete(ctx, sessionID)
}
func main() {
client := openai.NewClient()
result, err := deleteSession(context.Background(), &client, "sess_123")
if err != nil {
panic(err)
}
fmt.Println(result)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20// Replace the illustrative IDs and URLs below with your own resource values.
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.beta.agents.AgentSessionDeleted;
import com.openai.models.beta.agents.sessions.SessionDeleteParams;
public final class AgentsApiSessionsDeleteSessionExample {
public static AgentSessionDeleted deleteSession(OpenAIClient client, String sessionId) {
return client
.beta()
.agents()
.sessions()
.delete(SessionDeleteParams.builder().sessionId(sessionId).build());
}
public static void main(String[] args) {
var result = deleteSession(OpenAIOkHttpClient.fromEnv(), "sess_123");
System.out.println(result);
}
}
1
2
3
4
5
6
7
8# Replace the illustrative IDs and URLs below with your own resource values.
require "openai"
def delete_session(client, session_id)
client.beta.agents.sessions.delete(session_id)
end
puts delete_session(OpenAI::Client.new, "sess_123")
1
2
3
4curl -X DELETE \
"https://api.openai.com/v1/agents/sessions/$session_id" \
-H "OpenAI-Beta: agents=v1" \
-H "Authorization: Bearer $OPENAI_API_KEY"
会話を保持したまま現在の作業を停止するには、実行中のターンをキャンセルします。削除時のレスポンスについては、セッション削除のリファレンスを参照してください。