각 세션의 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"
전체 응답 스키마는 세션 조회 API 레퍼런스를 참고하세요.
세션 상태가 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"
대화를 유지하면서 현재 작업을 중지하려면 진행 중인 턴을 취소하세요. 삭제 요청의 응답은 세션 삭제 API 레퍼런스를 참고하세요.