Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте AgentSession для поддержания контекста беседы между вызовами.
Если сеанс использует управляемое службой хранилище, он может содержать непрозрачный идентификатор сеанса на стороне службы. Идентификаторы Responses и Conversations OpenAI по умолчанию привязаны к базовому API-ключу или проекту; если хостируемый агент использует один и тот же ключ или проект для нескольких пользователей, храните эти идентификаторы на стороне сервера и перед возобновлением проверяйте, что аутентифицированный пользователь или арендатор имеет право доступа к ним. Дополнительные сведения см. в разделе "Сеанс".
Основной шаблон использования
Большинство приложений следуют одному и тому же потоку:
- Создание сеанса (
CreateSessionAsync()) - Передайте этот сеанс каждому
RunAsync(...) - Повторное восстановление из сериализованного состояния (
DeserializeSessionAsync(...)) - Продолжайте использовать идентификатор беседы сервиса (зависит от агента, например
myChatClientAgent.CreateSessionAsync("existing-id"))
- Создание сеанса (
create_session()) - Передайте этот сеанс каждому
run(...) - Восстановление по идентификатору разговора службы (
get_session(...)) или из сериализованного состояния
- Создание сеанса (
CreateSession(...)) - Передайте этот сеанс каждому
RunText(...)с помощьюagent.WithSession(session) - Восстановить из сериализованного состояния с помощью
json.Unmarshal(...)вagent.Session
Пакет Go agent предоставляет основные типы для состояния беседы: agent.Session для состояния типа «ключ-значение», связанного с беседой, и agent.ContextProvider для внедрения и сохранения контекста.
// Create and reuse a session
AgentSession session = await agent.CreateSessionAsync();
var first = await agent.RunAsync("My name is Alice.", session);
var second = await agent.RunAsync("What is my name?", session);
// Persist and restore later
var serialized = agent.SerializeSession(session);
AgentSession resumed = await agent.DeserializeSessionAsync(serialized);
# Create and reuse a session
session = agent.create_session()
first = await agent.run("My name is Alice.", session=session)
second = await agent.run("What is my name?", session=session)
# Rehydrate by service conversation ID when needed
service_session = agent.get_session(service_session_id="<service-conversation-id>")
# Persist and restore later
serialized = session.to_dict()
resumed = AgentSession.from_dict(serialized)
session, err := a.CreateSession(ctx)
if err != nil {
panic(err)
}
Используйте сеанс для многоэтапных диалогов
resp, _ := a.RunText(ctx, "My name is Alice.", agent.WithSession(session)).Collect()
resp, _ = a.RunText(ctx, "What is my name?", agent.WithSession(session)).Collect()
Сохранять сеансы
Сеансы можно сериализовать в JSON для хранения и последующего возобновления:
data, err := json.Marshal(session)
if err != nil {
panic(err)
}
// store data...
// later:
var resumed agent.Session
if err := json.Unmarshal(data, &resumed); err != nil {
panic(err)
}
resp, err := a.RunText(ctx, "Continue from where we left off.", agent.WithSession(&resumed)).Collect()
Карта руководства
| Стр. | Фокус |
|---|---|
| Сессия |
AgentSession структура и сериализация |
| Поставщики контекстов | Встроенные и пользовательские шаблоны контекста и истории поставщиков. |
| Сжатие контекста | Эффективное управление развитием взаимодействий |
| Хранение | Встроенные режимы хранения и внешние стратегии сохраняемости |