에이전트 메모리
이 페이지에서는 구체적인 Oracle AI 에이전트 메모리 구현을 보여줍니다.
Oracle 에이전트 메모리
주: OracleAgentMemory.delete_thread()는 스레드 범위의 계단식 정리에 대해 지원되는 경로입니다. 연관된 메시지, 내구성 있는 메모리 및 관리되는 검색 데이터와 함께 스레드를 제거합니다. 원시 메시지 행만 삭제하는 OracleThread.delete_message()보다 큽니다. 스레드를 삭제하기 전에 해당 스레드에 대해 이 클라이언트에 이미 알려진 이전에 수락된 백그라운드 추출을 기다립니다. 삭제가 진행 중인 동안 동일한 스레드에 대한 모든 동시 작업을 직렬화하지는 않습니다.
클래스 oracleagentmemory.core.OracleAgentMemory
기준: IAgentMemory
Oracle DB 또는 호출자가 제공한 저장소에서 지원하는 에이전트 메모리 클라이언트입니다.
메모리 클라이언트를 만듭니다.
- 매개변수:
- store
OracleMemoryStore– 미리 구성된 저장소 인스턴스(선택사항)입니다. 제공된 경우 클라이언트는 자체 저장소를 인스턴스화하는 대신 이 저장소를 직접 사용합니다. 이 기능은 호출자가OracleAgentMemory에 의해 표시되는 생성자 옵션 이상으로 저장소 구성을 필요로 하는 경우에 유용합니다. - connection
object– 선택적 Oracle DB 연결/풀입니다. 제공된 경우 DB 저장소가 사용됩니다. 원시 연결을 전달하면 이 클라이언트 Instance에 대해 단일 세션 모드가 활성화되므로 동시 요청에서는 대신 연결 풀을 사용해야 합니다. 생략할 경우 호출자는 명시적store를 전달해야 합니다. - embedder
IEmbedder | str– Embedder 구현 인스턴스 또는 LiteLLM 포함 모델 식별자입니다. 생략하면 임베더가 첨부되지 않습니다. 그런 다음 벡터 전용 DB 검색에는 하위 레벨 저장소 API를 통해 사전 계산된 벡터가 필요하며, 키워드 DB 검색은 쿼리 텍스트에서 직접 실행할 수 있습니다. 하이브리드 DB 검색에는OracleDBEmbedder인스턴스가 필요하므로 관리형 하이브리드 인덱스와 기본 임베더가 동일한 데이터베이스 내 모델을 사용합니다. - LLM
ILlm– 메모리 추출 및/또는 컨텍스트 요약을 위해 스레드에서 사용되는 선택적 LLM 어댑터입니다. 기본적으로 이 클라이언트에서 생성되거나 로드된 스레드에는 LLM이 필요하므로 영구 메모리에 대한 최근 메시지를 채울 수 있습니다. 여기에llm를 전달하거나, 나중에create_thread에 제공하거나,memory_extraction_config=MemoryExtractionConfig(extract_memories=False)를 사용하여 자동 추출을 사용 안함으로 설정합니다. - memory_extraction_config
MemoryExtractionConfig– 선택적 클라이언트 레벨 메모리 추출 구성입니다. 추출 모드, 요약 동작 및 추출 제한과 같은 자동 메모리 추출 설정을 제어하는 데 사용합니다. 생략된 필드는 SDK 기본값을 사용합니다. - schema_policy
SchemaPolicy | str–connection에서 DB 저장소를 구성할 때만 사용되는 DB 스키마 설정 정책입니다. 기본값은SchemaPolicy.REQUIRE_EXISTING입니다. 기존 스키마에서 키워드 또는 하이브리드 검색을 먼저 사용으로 설정하거나 지원되는 이전 릴리스 관리 스키마를 열 때 SDK가 비파괴적 스키마 업그레이드를 적용하고 필요한 텍스트 검색 객체를 추가할 수 있도록SchemaPolicy.CREATE_IF_NECESSARY를 사용합니다. 현재 릴리스 구성을 이미 주장하는 개발 또는 부분 업데이트된 스키마를 대신 재생성해야 합니다. - memory_store_id
str–connection에서 DB 저장소를 구성할 때만 사용되는 관리 DB 메모리 저장소의 안정적 ID입니다. 동일한 ID를 재사용하여 동일한 관리 저장소를 다시 엽니다. ID는 밑줄로 관리되는 DB 객체 이름에 조인되므로 문자로 시작하고 문자, 숫자 및 밑줄만 포함해야 하며 최대 16자여야 합니다. 이 항목 또는table_name_prefix중 하나만 전달합니다. 생략할 경우 DB 저장소는table_name_prefix도 생략할 때table_name_prefix또는 접두어가 없는 기본값을 사용합니다. -
table_name_prefix
str–connection에서 DB 저장소를 생성할 때만 사용되는 선택적 DB 테이블/인덱스 접두어입니다. 이 항목 또는memory_store_id중 하나만 전달합니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_store_id를 사용하십시오. - search_strategy
SearchStrategy–connection에서 DB 저장소를 구성할 때 DB 검색 백엔드를 선택하는SearchStrategy값입니다. 벡터 전용 검색의 경우SearchStrategy.VECTOR(기본값), 저장된 검색 텍스트에 대해 관리되는 Oracle 하이브리드 벡터 인덱스를 질의하는 경우SearchStrategy.HYBRID, 벡터 결합 없이 저장된 검색 텍스트에 대해 키워드/텍스트 일치를 기준으로 순위를 지정하는 경우SearchStrategy.KEYWORD를 사용합니다.KEYWORD에는 임베더가 필요하지 않습니다.HYBRID를 사용하려면embedder이OracleDBEmbedder이어야 합니다. 기존 스키마와 호환되지 않는 전략이 사용되는 경우 클라이언트 시작이 실패합니다. 해당 스키마에 전략에 필요한 저장된 검색 상태가 포함되지 않을 수 있기 때문입니다. - search_index_sync
SearchIndexSyncMode–SearchStrategy.HYBRID및SearchStrategy.KEYWORD에 대해 관리되는 검색 인덱스 새로고침 동작을 선택하는SearchIndexSyncMode값입니다.SearchIndexSyncMode.ON_COMMIT는 기본값이며 쓰기 트랜잭션이 커밋되는 즉시 레코드를 검색할 수 있도록 합니다.SearchIndexSyncMode.MANUAL는 명시적 데이터베이스측 동기화 작업으로 새로고침을 유지합니다.SearchIndexSyncMode.AUTO를 사용하면 Oracle은 관리되는 하이브리드 인덱스를 비동기적으로 새로 고칠 수 있으며SearchStrategy.HYBRID에서만 지원됩니다. 키워드 검색은AUTO를 거부합니다. -
extract_memories
bool–True인 경우 이 클라이언트에 의해 생성되거나 로드된 스레드에 LLM이 필요하며 자동 메모리 추출이 사용으로 설정된 상태로 유지됩니다. 자동 메모리 추출을 사용 안함으로 설정하고 해당 스레드가 LLM 없이 작동하도록 허용하려면False로 설정합니다. 기본값은True이므로 추출 LLM 누락이 빠르게 실패합니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_custom_instructions
str–이 클라이언트에서 생성하거나 로드한 스레드에 대한 자동 메모리 추출 시스템 프롬프트에 추가된 선택적 사용자 정의 지침입니다.
create_thread,get_thread또는update_thread에 전달된 스레드별 값이 우선합니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. - memory_retention_config
MemoryRetentionConfig–connection에서 DB 저장소를 구성할 때만 사용되는 선택적 메모리 보존 구성입니다.MemoryRetentionConfig.default_ttl_days는 쓰기 호출이ttl_days를 생략하는 새 메시지와 메모리에 적용됩니다.MemoryRetentionConfig.max_ttl_days는 구성된 최대값을 초과하는 명시적 레코드별 기간을 경고와 함께 클램프하고, 설정된 경우ttl_days=None는 만료되지 않는 레코드를 생성하는 대신 해당 최대값을 사용합니다.SchemaPolicy.CREATE_IF_NECESSARY를 사용할 경우 명시적 구성은 기존 최신 관리 스키마에서 저장된 메타데이터를 새로 고치지만 기존 만료 날짜를 업데이트하지 않습니다. 생략하면 기존 설정이 유지됩니다. 명시적 구성이default_ttl_days또는max_ttl_days를NOT_SET_MARKER에 남겨 두는 경우 SDK는 스키마 메타데이터를 비교하거나 저장하기 전에 해당 속성을 기본값(None)으로 분석합니다. 레코드에 저장된 예상 정보, 애플리케이션이 보존하는 이유, 애플리케이션 또는 규정 보존 약정을 기반으로 이 구성을 선택합니다.
- store
경고: SchemaPolicy.CREATE_IF_NECESSARY는 초기화가 성공하기 전에 관리 스키마 DDL 및 최선 조건 데이터 재작성을 적용할 수 있으므로 일반 클라이언트 시작보다 비용이 많이 들 수 있습니다. 스키마에 많은 행이 포함될 수 있는 경우 이전 관리 스키마의 첫번째 열기를 이전 또는 유지 관리 작업으로 계획합니다.
스키마 설정에서 만료된 관리 레코드 비우기 작업을 생성해야 하지만 데이터베이스 사용자에게 스케줄러 작업 권한이 없는 경우 초기화가 경고되고 계속됩니다. 만료된 메시지 및 메모리는 읽기 및 검색에서 숨겨지지만 CREATE JOB 또는 이와 동등한 스케줄러 권한을 가진 사용자가 작업을 생성할 때까지는 물리적으로 비워지지 않습니다.
SchemaPolicy.CREATE_IF_NECESSARY가 기존 스키마를 통해 관리형 하이브리드 인덱스를 처음 생성하는 경우 Oracle은 저장된 검색 텍스트를 스캔하고 구성된 데이터베이스 내 모델에서 관리형 하이브리드 인덱스 상태를 구축합니다. 클라이언트 시작은 해당 DDL이 완료될 때까지 기다리므로 대규모 스키마에 대한 이전 또는 유지 관리 작업으로 첫번째 하이브리드 업그레이드를 계획하십시오. SearchIndexSyncMode는 인덱스가 존재하는 후의 지속적인 유지 관리를 제어하며 첫번째 인덱스가 비동기적으로 생성되지 않습니다.
- 확장: ValueError – 충돌하는 저장소 구성(예:
store및connection모두 전달, DB 연결 없이 DB 특정 옵션 또는store및connection모두 생략)이 제공되는 경우 - 매개변수:
- 스토어
OracleMemoryStore - 연결
object - embedder
IEmbedder | str - llm
ILlm - memory_extraction_config
MemoryExtractionConfig - schema_policy
SchemaPolicy | str - memory_store_id
str - table_name_prefix
str - search_strategy
SearchStrategy - search_index_sync
SearchIndexSyncMode - extract_memories
bool - memory_extraction_custom_instructions
str - memory_retention_config
MemoryRetentionConfig
- 스토어
예제
from oracleagentmemory.core import (
MemoryExtractionConfig,
SearchIndexSyncMode,
OracleAgentMemory,
SchemaPolicy,
SearchStrategy,
)
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
read_only_client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
DB 내 임베딩 모델을 사용하여 Oracle 하이브리드 인덱스 검색 활용:
from oracleagentmemory.core.embedders import OracleDBEmbedder
db_embedder = OracleDBEmbedder(
connection=db_pool,
model="DOC_MODEL",
embedding_dimension=768,
)
hybrid_client = OracleAgentMemory(
connection=db_pool,
embedder=db_embedder,
schema_policy=SchemaPolicy.CREATE_IF_NECESSARY,
search_strategy=SearchStrategy.HYBRID,
search_index_sync=SearchIndexSyncMode.ON_COMMIT,
)
방법 add_agent
상점에 에이전트 프로파일 레코드를 추가합니다.
- 매개변수:
- agent_id
str– 에이전트 식별자입니다. - 정보
str– 에이전트에 대한 자유 형식 정보입니다. - metadata
dict[str, Any] | None– 에이전트 프로파일 행에 저장된 선택적 메타데이터 매핑입니다.
- agent_id
- 반환: 저장된 에이전트 프로파일의 식별자입니다.
- 반환 유형: str
주
에이전트 프로파일 레코드는 클라이언트 레벨 저장소에 저장되며 의도적으로 범위가 지정되지 않습니다. 반환된 레코드 식별자는 애플리케이션이 agent_id로 사용하는 공용 식별자와 동일합니다.
예제
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_agent(
"a1",
"Support assistant",
metadata={"source": "catalog"},
)
'a1'
방법 add_memory
표시된 사용자, 에이전트 및 스레드에 기인한 메모리를 메모리 시스템에 추가합니다.
- 매개변수:
- content
str– 지속할 메모리 컨텐츠입니다. - memory_type
Literal['memory', 'guideline', 'fact', 'preference'] | ~oracleagentmemory._notset._NotSetMarker– 저장할 메모리 범주입니다. 지원되는 값은"memory","fact","guideline"및"preference"입니다. 생략하면 콘텐츠가 일반"memory"로 저장됩니다. - user_id
str– 저장된 메모리와 연관된 선택적 범위 식별자입니다. - agent_id
str– 저장된 메모리와 연관된 선택적 범위 식별자입니다. - thread_id
str– 저장된 메모리와 연관된 선택적 범위 식별자입니다. - memory_id
str– 이 메모리 행에 대해 선택적인 호출자가 제공하는 안정적인 식별자입니다. - metadata
dict[str, Any] | None– 저장된 메모리와 함께 지속되는 선택적 메타데이터입니다. - timestamp
str | None– 이 메모리에 대해 저장할 선택적 시간 기록입니다. 메모리가 생성된 시기를 나타냅니다. 생략하거나None인 경우 저장소는 현재 시간을 사용합니다.ttl_anchor가TimeToLiveAnchor.TIMESTAMP인 경우 시간대가 없는 ISO-8601 시간 기록은 UTC로 처리됩니다. - ttl_days
int | None– 선택적 TTL 기간(일)입니다. 스키마 기본 TTL 기간을 사용하려면 이 인수를 생략하십시오. 보존 구성이 하나를 설정할 때MemoryRetentionConfig.max_ttl_days를 사용하거나 만료되지 않는 메모리를 저장하려면None를 전달합니다.MemoryRetentionConfig.max_ttl_days이상의 값은 경고와 함께 해당 최대값으로 고정됩니다. - ttl_anchor
TimeToLiveAnchor– 선택적 TTL(Time-to-Live) 앵커 데이터베이스 생성 시간에TimeToLiveAnchor.CREATED_AT를 사용하고 메모리 시간 기록에TimeToLiveAnchor.TIMESTAMP를 사용합니다. 표준 시간대가 없는 ISO-8601 시간 기록은 UTC로 처리됩니다. - **store_kwargs(임의) – 보조 기억 장치로 전달된 저장소별 쓰기 옵션입니다.
- content
- 반환: 삽입된 메모리 레코드의 식별자입니다.
- 반환 유형: str
예제
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
memory_id = client.add_memory("User likes pizza", memory_id="mem-1")
memory_id
'mem-1'
method add_memory_async(비동기)
비동기적으로 클라이언트에 메모리 레코드를 추가합니다.
- 매개변수:
- content
str– 메모리로 저장할 텍스트 콘텐츠입니다. - memory_type
Literal['memory', 'guideline', 'fact', 'preference'] | ~oracleagentmemory._notset._NotSetMarker– 저장할 메모리 범주입니다. 지원되는 값은"memory","fact","guideline"및"preference"입니다. 생략하면 콘텐츠가 일반"memory"로 저장됩니다. - user_id
str– 메모리와 연결할 선택적 사용자 식별자입니다. - agent_id
str– 메모리와 연결할 선택적 에이전트 식별자입니다. - thread_id
str– 메모리와 연결할 선택적 스레드 식별자입니다. - memory_id
str– 호출자가 제공하는 안정적인 식별자입니다(선택 사항). 생략하면 점포에서 하나를 생성합니다. - metadata
dict[str, Any] | None– 메모리 행과 함께 지속되는 선택적 메타데이터입니다. - timestamp
str | None– 이 메모리에 대해 저장할 선택적 시간 기록입니다. 메모리가 생성된 시기를 나타냅니다. 생략하거나None인 경우 저장소는 현재 시간을 사용합니다. - ttl_days
int | None– 선택적 TTL 기간(일)입니다. 스키마 기본 TTL 기간을 사용하려면 이 인수를 생략하십시오.None를 전달하여 만료되지 않는 메모리를 저장합니다. - ttl_anchor
TimeToLiveAnchor– 선택적 TTL(Time-to-Live) 앵커 데이터베이스 생성 시간에TimeToLiveAnchor.CREATED_AT를 사용하고 메모리 시간 기록에TimeToLiveAnchor.TIMESTAMP를 사용합니다. - **store_kwargs(임의) – 보조 기억 장치로 전달된 구현별 쓰기 옵션입니다.
- content
- 반환: 삽입된 메모리 레코드의 식별자입니다.
- 반환 유형: str
방법 add_user
점포에 사용자 프로파일 레코드를 추가합니다.
- 매개변수:
- user_id
str– 사용자 식별자입니다. - information
str– 사용자에 대한 자유 형식 정보입니다. - metadata
dict[str, Any] | None– 사용자 프로파일 행에 저장된 선택적 메타데이터 매핑입니다.
- user_id
- 반환: 저장된 사용자 프로파일의 식별자입니다.
- 반환 유형: str
주
사용자 프로파일 레코드는 클라이언트 레벨 저장소에 저장되며 의도적으로 범위가 지정되지 않습니다. 반환된 레코드 식별자는 애플리케이션이 user_id로 사용하는 공용 식별자와 동일합니다.
예제
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_user(
"u1",
"Prefers concise answers.",
metadata={"source": "crm"},
)
'u1'
방법 close
에이전트 메모리 구성 요소를 닫습니다.
닫기는 새 백그라운드 추출 작업 수락을 중지하고 보류 중인 백그라운드 메모리 추출이 구성된 시간 초과까지 완료될 때까지 기다립니다. 해당 시간 초과가 만료되면 일부 백그라운드 추출 작업이 아직 완료되지 않은 경우에도 close()가 반환됩니다. 메소드는 idempotent입니다.
- 매개변수: timeout
float | None– 수락된 백그라운드 추출 작업이 완료될 때까지 기다리는 최대 시간(초)입니다(선택 사항). 기본값은300입니다.None를 전달하여 무기한 기다립니다. - 반환 유형: 없음
예제
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
schema_policy=SchemaPolicy.CREATE_IF_NECESSARY,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
client.close()
method close_async(비동기)
에이전트 메모리 구성 요소를 비동기적으로 닫습니다.
이 방법은 close()와 동일한 종료 동작을 따릅니다. 시간 초과가 만료되면 백그라운드 추출 작업이 계속 실행되는 동안 반환될 수 있습니다.
- 매개변수: timeout
float | None– 수락된 백그라운드 추출 작업이 완료될 때까지 기다리는 최대 시간(초)입니다(선택 사항). 기본값은300입니다.None를 전달하여 무기한 기다립니다. - 반환 유형: 없음
예제
await client.close_async()
방법 create_thread
스레드를 만들고 등록합니다.
- 매개변수:
- thread_id
str– 스레드 식별자입니다. 생략할 경우 새 항목이 생성됩니다. - user_id
str– 이 스레드 레코드에 첨부된 사용자 식별자입니다. 생략할 경우 새 항목이 생성됩니다. - agent_id
str– 이 스레드 레코드에 연결된 에이전트 식별자입니다. 생략할 경우 새 항목이 생성됩니다. - 메타데이터
dict[str, Any] | None– 대화 스레드와 함께 지속되는 선택적 JSON 유사 메타데이터입니다. - LLM
ILlm– 이 스레드에 대한 선택적 LLM 대체입니다. 생략할 경우 구성 시 구성된 클라이언트 레벨 LLM이 사용됩니다. 기본적으로 클라이언트 또는 스레드는 자동 메모리 추출을 실행할 수 있도록 LLM을 제공해야 합니다. 해당 요구 사항을 옵트아웃하려면 여기 또는 클라이언트에서memory_extraction_config=MemoryExtractionConfig(extract_memories=False)를 설정합니다. - max_message_token_length
int– 메모리 추출 및 컨텍스트 요약 업데이트 중 잘림 또는 요약 전의 최대 프롬프트 시간 메시지 크기입니다. 저장된 메시지 내용은 변경되지 않습니다. 생략할 경우 기본값은15_000토큰입니다. - message_shortening_input_token_limit
int– 대형 프롬프트 시간 메시지 복사본을 줄일 때 LLM으로 보낸 메시지 발췌 내용의 최대 크기(토큰)입니다. 생략할 경우 기본값은30_000토큰입니다. - memory_extraction_config
MemoryExtractionConfig– 선택적 스레드별 메모리 추출 구성입니다. 누락된 필드는 에이전트 메모리 구성 요소에서 상속됩니다. 분석된 구성은 스레드와 함께 저장되므로 나중에 로드하면 생성 시간 동작이 유지됩니다. - context_card_token_limit
int– 컨텍스트 카드에 포함된 요약 및 항목 목록을 작성하는 데 사용되는 LLM 프롬프트에 대한 최대 입력 토큰 예산입니다. 생략할 경우 기본값은100_000입니다. - context_card_type_search_concurrency
int–min_relevant_results_by_type로 컨텍스트 카드를 작성할 때 동시에 실행할 최대 메모리 유사 레코드 검색 수입니다. 생략할 경우 기본값은5입니다. -
extract_memories
bool–자동 메모리 추출을 위한 선택적 스레드당 대체입니다.
True인 경우 이 스레드에는 자동 추출을 실행할 수 있도록 LLM이 필요합니다. 이 스레드에 대한 자동 추출을 사용 안함으로 설정하고 LLM 없이 작업을 허용하려면False로 설정합니다. 생략할 경우 클라이언트 레벨extract_memories설정이 사용됩니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_window
int–메모리 추출 중 포함할 최근 메시지 수입니다. 새로 추가된 메시지의 전체 일괄 처리를 사용하여
add_messages호출당 하나의 추출을 수행하려면-1으로 설정합니다. 생략할 경우 기본값은-1입니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
context_summary_update_frequency
int–컨텍스트 요약 새로고침 빈도입니다. 새로 추가된 메시지의 전체 일괄 처리를 사용하여
add_messages호출당 하나의 요약 업데이트를 수행하려면-1로 설정합니다. 생략할 경우 기본값은-1입니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_frequency
int–메모리 추출 업데이트의 빈도입니다. 새로 추가된 메시지의 전체 일괄 처리를 사용하여
add_messages호출당 하나의 추출을 수행하려면-1으로 설정합니다. 생략할 경우 기본값은-1입니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_token_limit
int–메모리 추출 및 요약 업데이트 실행에 사용되는 LLM 프롬프트의 최대 크기(토큰)입니다. 생략할 경우 기본값은
100_000입니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_custom_instructions
str–이 스레드에 대한 메모리 추출 시스템 프롬프트에 추가된 선택적 사용자 정의 지침입니다. 제공된 경우 확인된 값은 스레드 런타임 구성과 함께 유지됩니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–소스 메시지에서 자동으로 추출된 메모리로 복사된 메타데이터에 대한 선택적 스레드별 대체입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
enable_context_summary
bool–이 스레드에 대해 실행 중인 컨텍스트 요약을 유지할지 여부입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. - **kwargs(임의) – 추가 구현별 스레드 옵션입니다.
- thread_id
- 반환:
OracleThread인스턴스입니다. - 반품 유형: OracleThread
- Raises: ValueError – 자동 메모리 추출에 사용 가능한 LLM이 없고 스레드 및 클라이언트가
memory_extraction_config=MemoryExtractionConfig(extract_memories=False)로 구성되지 않은 경우입니다.
예제
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
thread = client.create_thread(thread_id="c1", user_id="u1")
thread.thread_id
'c1'
방법 delete_agent
식별자별로 에이전트 프로파일 레코드를 삭제합니다.
- 매개변수:
- agent_id
str– 프로파일을 제거해야 하는 에이전트 식별자입니다. - cascade
bool–True(기본값)인 경우 이 에이전트에 범위가 지정된 레코드도 삭제합니다. 여기에는 소유한 스레드 자체 삭제, 해당 스레드에서 제거된 메시지 및 메모리 유사 레코드, 메시지, 메모리, 지침, 팩트 또는 기본 설정과 같은 나머지 직접 에이전트 범위 레코드가 포함됩니다. 이 범위의 정리는 일치하는 에이전트 프로파일 행이 이미 없을 때 계속 실행됩니다. 프로파일 레코드만 제거하려면False로 설정합니다.
- agent_id
- 반환: 삭제된 에이전트 프로파일 행 수(
0또는1)입니다. 계단식 정리 중 범위가 지정된 행이 제거된 경우에도0일 수 있습니다. - 반품 유형: int
- 발생: TimeoutError – 내부 삭제 대기 시간이 초과되기 전에 이미 알려진 소유 스레드에 대해 이전에 수락된 백그라운드 추출이 완료되지 않은 경우 발생합니다.
주
계단식 삭제는 보조 저장소 내에서 계획되고 실행되므로 프로파일 삭제 및 모든 범위가 지정된 하위 삭제가 하나의 저장소 작업에서 수행됩니다. 계단식 삭제가 실행되기 전에 이 메소드는 이 에이전트 메모리 구성 요소를 통해 해당 시점에 알려진 소유 스레드에 대해 이미 수락된 이전 백그라운드 추출을 기다립니다. 해당 대기가 시작된 후 또는 다른 에이전트 메모리 구성 요소나 프로세스에 의해 시작된 작업을 위해 수락된 작업을 기다리지 않습니다. 삭제가 진행 중인 동안의 동시 작업자 범위 사용이 지원되지 않습니다.
예제
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_agent("a-delete", "Support assistant")
'a-delete'
client.delete_agent("a-delete")
1
방법 delete_memory
메모리 유사 레코드(예: 메모리, 팩트, 기본 설정 또는 지침)를 식별자로 삭제합니다.
- 매개변수: memory_id
str– 메모리 식별자입니다. 식별자는 저장된memory,guideline,fact또는preference레코드를 참조할 수 있습니다. - 반환: 삭제된 메모리 유사 행 수(
0또는1)입니다. - 반품 유형: int
예제
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
memory_id = client.add_memory("Temporary memory", memory_id="mem-delete")
client.delete_memory(memory_id)
1
method delete_memory_async(비동기)
메모리 유사 레코드(예: 메모리, 팩트, 기본 설정 또는 지침)를 식별자로 비동기적으로 삭제합니다.
- 매개변수: memory_id
str– 제거할 메모리 유사 레코드의 식별자입니다. - 반환: 삭제된 메모리 유사 레코드 수입니다.
- 반품 유형: int
방법 delete_thread
스레드 식별자와 연관된 모든 레코드를 삭제합니다.
- 매개변수: thread_id
str– 삭제할 스레드 식별자입니다. - 반환: 삭제된 대화 스레드 수(
0또는1)입니다. - 반품 유형: int
- 발생: TimeoutError – 내부 삭제 대기 시간이 초과되기 전에 이 스레드에 대해 이전에 수락된 백그라운드 추출이 완료되지 않을 때 발생합니다.
주
스레드의 보존-완료 제거가 필요한 경우 이 작업을 사용합니다. 보조 저장소는 연관된 스레드 범위의 메시지, 영구 메모리와 관리되는 검색 데이터와 함께 스레드를 삭제합니다. 이는 원시 메시지 레코드만 제거하고 해당 메시지에서 생성된 파생된 메모리에 캐스케이드하지 않는 OracleThread.delete_message()와 다릅니다. 스레드를 삭제하기 전에 이 메소드는 이 에이전트 메모리 구성 요소를 통해 해당 스레드에 대해 이미 수락된 이전 백그라운드 추출을 기다립니다. 해당 대기가 시작된 후 또는 다른 에이전트 메모리 구성 요소나 프로세스에 의해 시작된 작업을 위해 백그라운드 작업이 수락될 때까지 기다리지 않습니다. 삭제가 진행 중인 동안 동일한 스레드의 동시 사용은 지원되지 않습니다.
예제
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
thread = client.create_thread(thread_id="c-delete")
client.delete_thread(thread.thread_id)
1
방법 delete_user
식별자로 사용자 프로파일 레코드를 삭제합니다.
- 매개변수:
- user_id
str– 프로파일을 제거해야 하는 사용자 식별자입니다. - cascade
bool–True(기본값)도 이 사용자에게 범위가 지정된 레코드를 삭제합니다. 여기에는 소유 스레드 자체 삭제, 해당 스레드에서 제거된 메시지 및 메모리 유사 레코드, 메시지, 메모리, 지침, 팩트 또는 기본 설정과 같은 나머지 직접 사용자 범위 레코드가 포함됩니다. 이 범위의 정리는 일치하는 사용자 프로파일 행이 이미 없을 때 계속 실행됩니다. 프로파일 레코드만 제거하려면False로 설정합니다.
- user_id
- 반환: 삭제된 사용자 프로파일 행 수(
0또는1)입니다. 계단식 정리 중 범위가 지정된 행이 제거된 경우에도0일 수 있습니다. - 반품 유형: int
- 발생: TimeoutError – 내부 삭제 대기 시간이 초과되기 전에 이미 알려진 소유 스레드에 대해 이전에 수락된 백그라운드 추출이 완료되지 않은 경우 발생합니다.
주
계단식 삭제는 보조 저장소 내에서 계획되고 실행되므로 프로파일 삭제 및 모든 범위가 지정된 하위 삭제가 하나의 저장소 작업에서 수행됩니다. 계단식 삭제가 실행되기 전에 이 메소드는 이 에이전트 메모리 구성 요소를 통해 해당 시점에 알려진 소유 스레드에 대해 이미 수락된 이전 백그라운드 추출을 기다립니다. 해당 대기가 시작된 후 또는 다른 에이전트 메모리 구성 요소나 프로세스에 의해 시작된 작업을 위해 수락된 작업을 기다리지 않습니다. 삭제가 진행 중인 동안의 동시 작업자 범위 사용이 지원되지 않습니다.
예제
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
client.add_user("u-delete", "Prefers concise answers.")
'u-delete'
client.delete_user("u-delete")
1
방법 get_thread
이전에 생성한 스레드를 검색합니다.
- 매개변수:
- thread_id
str– 스레드를 만들 때 사용되는 식별자입니다. - LLM
ILlm– 재개설된 스레드에 대한 선택적 LLM 대체입니다. 생략할 경우 구성 시 구성된 클라이언트 레벨 LLM이 사용됩니다. - max_message_token_length
int– 메모리 추출 및 컨텍스트 요약 업데이트 중 잘라내기 또는 요약 전 최대 프롬프트 시간 메시지 크기에 대한 선택적 대체입니다. 저장된 메시지 내용은 변경되지 않습니다. - message_shortening_input_token_limit
int– 대형 프롬프트 시간 메시지 복사본을 줄일 때 LLM으로 보낸 메시지 발췌 내용의 최대 크기(토큰)에 대한 선택적 대체입니다. - memory_extraction_config
MemoryExtractionConfig– 반환된OracleThread인스턴스에 대한 선택적 그룹화된 추출 구성입니다. 생략된 필드는 저장된 스레드 구성 및 에이전트 메모리 구성 요소에서 상속됩니다. 우선 적용은 반환된OracleThread인스턴스에만 적용되며 저장된 대화 스레드 구성에 다시 기록되지 않습니다. - context_card_token_limit
int– 반환된OracleThread인스턴스에 대한 선택적 대체입니다. 컨텍스트 카드에 포함된 요약 및 토픽 목록을 작성하는 데 사용되는 LLM 프롬프트의 입력 토큰 예산을 설정합니다. - context_card_type_search_concurrency
int– 반환된OracleThread인스턴스에 대한 선택적 대체입니다.min_relevant_results_by_type를 사용하여 컨텍스트 카드를 작성할 때 동시에 실행되도록 메모리 유사 레코드 검색 수를 설정합니다. -
extract_memories
bool–재개설된 스레드에서 자동 메모리 추출에 대한 선택적 대체입니다. 생략할 경우 클라이언트 레벨
extract_memories설정이 사용됩니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_window
int–메모리 추출 중 사용된 최근 메시지 수에 대한 선택적 대체입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
context_summary_update_frequency
int–컨텍스트 요약 새로고침 빈도에 대한 선택적 대체입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_frequency
int–메모리 추출 업데이트 빈도에 대한 선택적 대체입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_token_limit
int–메모리 추출 및 요약 업데이트 실행에 사용되는 LLM 프롬프트의 최대 크기(토큰)에 대한 선택적 대체입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_custom_instructions
str | None–사용자정의 메모리 추출 지침에 대한 선택적 대체입니다.
None를 전달하면 저장된 대화 스레드 구성을 업데이트하지 않고 반환된OracleThread인스턴스에 대한 스레드 레벨 사용자정의 지침이 지워집니다. 구성된 경우 클라이언트 레벨 기본값이 계속 적용됩니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–소스 메시지에서 자동으로 추출된 메모리로 복사된 메타데이터에 대한 선택적 대체입니다. 우선 적용은 반환된
OracleThread인스턴스에만 적용됩니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
enable_context_summary
bool–재개설된 스레드가 실행 중인 컨텍스트 요약을 유지해야 하는지 여부에 대한 선택적 대체입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오.
- thread_id
- 반환: 저장소 메타데이터에서 재구성된
OracleThread인스턴스입니다. - 반품 유형: OracleThread
- 발생 값:
- KeyError – 이 클라이언트 인스턴스에서 스레드 ID를 알 수 없는 경우입니다.
- ValueError – 자동 메모리 추출에 사용할 수 있는 LLM이 없고 클라이언트가
memory_extraction_config=MemoryExtractionConfig(extract_memories=False)로 구성되지 않은 경우
주
명시적 호출당 재정의가 우선합니다. 런타임 대체가 생략되면 재개설된 스레드는 SDK 기본값으로 폴백하기 전에 사용 가능한 경우 지속 런타임 구성을 사용합니다.
예제
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
created = client.create_thread(thread_id="c1", user_id="u1")
loaded = client.get_thread("c1")
loaded.user_id
'u1'
방법 search
조회와 관련된 레코드를 동기적으로 검색합니다.
- 매개변수:
- query
str– 자연어 질의 문자열입니다. - user_id
str | None– 사용자 식별자 필터입니다. OracleAgentMemory 클라이언트 검색에는scope가 제공되지 않는 한 명시적 사용자 범위가 필요합니다. 구체적user_id를 해당 사용자를 대상으로 전달하거나 범위가 지정되지 않은 사용자 레코드만 대상으로None를 전달합니다. - agent_id
str | None– 선택적 에이전트 식별자 필터입니다.scope가 제공된 경우 무시됩니다. - thread_id
str | None– 선택적 스레드 식별자 필터입니다.scope가 제공된 경우 무시됩니다. - exact_user_match
bool– 사용자 일치가 엄격해야 하는지 여부입니다. OracleAgentMemory 클라이언트 검색에는 정확한 사용자 일치 및 거부False가 필요합니다.scope가 제공된 경우 무시됩니다. - exact_agent_match
bool– 에이전트 일치가 엄격해야 하는지 여부입니다.scope가 제공된 경우 무시됩니다. - exact_thread_match
bool– 스레드 일치가 엄격해야 하는지 여부입니다.scope가 제공된 경우 무시됩니다. - max_results
int– 반환할 최대 결과 수(선택 사항)입니다. 제공된 경우1이상이어야 합니다. 이 인수를 생략하면 기본값인10가 사용됩니다. 상한입니다. 필터가 너무 제한적이거나, 만료되지 않은 일치 레코드가 적거나, 구현별 검색 동작으로 인해 호출이max_results개 미만의 결과를 반환할 수 있습니다. - record_types
list[str]–"memory"또는"message"와 같이 포함할 레코드 유형의 선택적 목록입니다. -
metadata_filter
dict[str, Any] | None–범위 및 레코드 유형 필터링 후 추가 필터로 사용되는 선택적 메타데이터 필터 매핑입니다.
metadata_filter의 항목은 AND 의미와 결합됩니다. 값이 필드 레벨 연산자 딕셔너리가 아닌 항목은 정확한 일치 의미를 사용합니다. 즉, 요청된 키가 저장된 레코드 메타데이터에 있어야 합니다. 중첩된 딕셔너리는 중첩된 메타 데이터 객체를 재귀적으로 일치시킵니다. 스칼라 및 목록 값이 정확히 일치해야 합니다. 목록 순서 및 길이도 일치해야 합니다. 메타데이터 필터링 없이 검색하려면 이 인수를 생략하거나None를 전달하십시오. 예를 들어 스칼라 필드의 경우metadata_filter={"source": "profile_import"}, 중첩 필드의 경우metadata_filter={"prefs": {"category": "travel"}}, 정확한 목록 일치의 경우metadata_filter={"tags": ["survey", "travel"]}가 있습니다. 조건을 결합하여 모든 조건을 요구합니다.metadata_filter={ "source": "profile_import", "prefs": {"category": "travel"}, "tags": ["survey", "travel"], }배열 멤버쉽을 테스트하려면 필드 레벨 연산자 딕셔너리를 사용합니다.
"$array_contains"는 하나의 값 또는 목록의 모든 값과 일치합니다."$array_contains_any"는 목록의 하나 이상의 값과 일치합니다."$not"는 연산자 딕셔너리 또는 원시 정확한 일치 값을 포함하여 동일한 필드에서 다른 필드 레벨 표현식을 부정합니다. 누락된 필드를 포함하여 양수 표현식이 실패할 때 음수 표현식이 일치합니다. 음수 배열 멤버쉽도 배열이 아닌 필드와 일치합니다.metadata_filter={ "source": "profile_import", "tags": { "$array_contains": "travel", "$not": {"$array_contains": "archived"}, }, } - scope
SearchScope– 사전 구축된 검색 범위(선택사항)입니다.scope또는 명시적 식별자 및 정확한 일치 인수 중 하나만 제공하십시오. OracleAgentMemory 클라이언트 검색을 수행하려면 해결된 범위가exact_user_match=True와 함께 명시적user_id를 포함해야 합니다. 범위가 지정되지 않은 사용자 레코드만 대상으로 지정하려면user_id=None를 사용합니다.
- query
- 반품: 관련성을 줄여 정렬된 검색 결과입니다. 목록에는
max_results개 미만의 항목이 포함될 수 있습니다. - 반환 유형: list[SearchResult]
- 확장: ValueError –
scope가 명시적 식별자 또는 정확한 일치 인수와 결합된 경우,max_results가1보다 작은 경우,metadata_filter가 딕셔너리 또는None가 아닌 경우 또는 구현에서 해결된 클라이언트 검색 범위를 거부하는 경우 OracleAgentMemory 클라이언트 검색은 생략된 사용자 범위를 거부하고exact_user_match=False를 거부합니다.
주
명시적 None 범위 값은 해결된 정확한 일치 규칙을 계속 따릅니다. exact_*_match=False는 해당 차원을 제약 없는 상태로 둡니다. 반면 exact_*_match=True는 해당 차원에서 범위가 지정되지 않은 레코드만 일치시킵니다.
method search_async(비동기)
조회와 관련된 레코드를 비동기적으로 검색합니다.
- 매개변수:
- query
str– 자연어 질의 문자열입니다. - user_id
str | None– 사용자 식별자 필터입니다. OracleAgentMemory 클라이언트 검색에는scope가 제공되지 않는 한 명시적 사용자 범위가 필요합니다. 구체적user_id를 해당 사용자를 대상으로 전달하거나 범위가 지정되지 않은 사용자 레코드만 대상으로None를 전달합니다. - agent_id
str | None– 선택적 에이전트 식별자 필터입니다.scope가 제공된 경우 무시됩니다. - thread_id
str | None– 선택적 스레드 식별자 필터입니다.scope가 제공된 경우 무시됩니다. - exact_user_match
bool– 사용자 일치가 엄격해야 하는지 여부입니다. OracleAgentMemory 클라이언트 검색에는 정확한 사용자 일치 및 거부False가 필요합니다.scope가 제공된 경우 무시됩니다. - exact_agent_match
bool– 에이전트 일치가 엄격해야 하는지 여부입니다.scope가 제공된 경우 무시됩니다. - exact_thread_match
bool– 스레드 일치가 엄격해야 하는지 여부입니다.scope가 제공된 경우 무시됩니다. - max_results
int– 반환할 최대 결과 수(선택 사항)입니다. 제공된 경우1이상이어야 합니다. 이 인수를 생략하면 기본값인10가 사용됩니다. - record_types
list[str]–"memory"또는"message"와 같이 포함할 레코드 유형의 선택적 목록입니다. -
metadata_filter
dict[str, Any] | None–범위 및 레코드 유형 필터링 후 추가 필터로 사용되는 선택적 메타데이터 필터 매핑입니다.
metadata_filter의 항목은 AND 의미와 결합됩니다. 값이 필드 레벨 연산자 딕셔너리가 아닌 항목은 정확한 일치 의미를 사용합니다. 즉, 요청된 키가 저장된 레코드 메타데이터에 있어야 합니다. 중첩된 딕셔너리는 중첩된 메타 데이터 객체를 재귀적으로 일치시킵니다. 스칼라 및 목록 값이 정확히 일치해야 합니다. 목록 순서 및 길이도 일치해야 합니다. 메타데이터 필터링 없이 검색하려면 이 인수를 생략하거나None를 전달하십시오. 예를 들어 스칼라 필드의 경우metadata_filter={"source": "profile_import"}, 중첩 필드의 경우metadata_filter={"prefs": {"category": "travel"}}, 정확한 목록 일치의 경우metadata_filter={"tags": ["survey", "travel"]}가 있습니다. 조건을 결합하여 모든 조건을 요구합니다.metadata_filter={ "source": "profile_import", "prefs": {"category": "travel"}, "tags": ["survey", "travel"], }배열 멤버쉽을 테스트하려면 필드 레벨 연산자 딕셔너리를 사용합니다.
"$array_contains"는 하나의 값 또는 목록의 모든 값과 일치합니다."$array_contains_any"는 목록의 하나 이상의 값과 일치합니다."$not"는 연산자 딕셔너리 또는 원시 정확한 일치 값을 포함하여 동일한 필드에서 다른 필드 레벨 표현식을 부정합니다. 누락된 필드를 포함하여 양수 표현식이 실패할 때 음수 표현식이 일치합니다. 음수 배열 멤버쉽도 배열이 아닌 필드와 일치합니다.metadata_filter={ "source": "profile_import", "tags": { "$array_contains": "travel", "$not": {"$array_contains": "archived"}, }, } - scope
SearchScope– 사전 구축된 검색 범위(선택사항)입니다.scope또는 명시적 식별자 및 정확한 일치 인수 중 하나만 제공하십시오. OracleAgentMemory 클라이언트 검색을 수행하려면 해결된 범위가exact_user_match=True와 함께 명시적user_id를 포함해야 합니다. 범위가 지정되지 않은 사용자 레코드만 대상으로 지정하려면user_id=None를 사용합니다.
- query
- 반품: 관련성을 줄여 정렬된 검색 결과입니다.
- 반환 유형: list[SearchResult]
- 확장: ValueError –
scope가 명시적 식별자 또는 정확한 일치 인수와 결합된 경우,max_results가1보다 작은 경우,metadata_filter가 딕셔너리 또는None가 아닌 경우 또는 구현에서 해결된 클라이언트 검색 범위를 거부하는 경우 OracleAgentMemory 클라이언트 검색은 생략된 사용자 범위를 거부하고exact_user_match=False를 거부합니다.
주
명시적 None 범위 값은 해결된 정확한 일치 규칙을 계속 따릅니다. exact_*_match=False는 해당 차원을 제약 없는 상태로 둡니다. 반면 exact_*_match=True는 해당 차원에서 범위가 지정되지 않은 레코드만 일치시킵니다.
방법 update_memory
저장된 메모리 유사 레코드를 식별자로 업데이트합니다.
- 매개변수:
- memory_id
str– 업데이트할 메모리 유사 레코드의 식별자입니다. - content
str– 선택적 대체 컨텐츠입니다. 저장된 콘텐츠를 대체할 문자열을 제공합니다. 생략하면 저장된 내용이 보존됩니다.None전달은 지원되지 않습니다. 현재 값을 유지하려면content를 생략하고, 레코드를 제거하려면delete_memory()를 사용하십시오. - metadata
dict[str, Any] | None– 선택적 대체 메타데이터 매핑입니다. 생략하면 저장된 메타데이터가 보존됩니다. 제공된 경우 저장된 메타데이터 객체를 대체합니다. 이 API는 메타데이터를 심층 병합하지 않습니다. - timestamp
str | None– 이 메모리에 대한 선택적 새 시간 기록입니다. 메모리가 생성된 시기를 나타냅니다. 생략하면 저장된 시간 기록이 보존됩니다. 저장된 시간 기록을 지우고 저장소에서 레코드가 생성된 시간을 사용하려면None을 전달합니다.ttl_anchor가TimeToLiveAnchor.TIMESTAMP인 경우 시간대가 없는 ISO-8601 시간 기록은 UTC로 처리됩니다. - ttl_days
int | None– 선택적 만료 새로 고침(일)입니다.ttl_anchor가 제공되지 않은 경우 현재 만료를 변경하지 않고 그대로 두려면 이 인수를 생략합니다. 보존 구성이 하나를 설정할 때MemoryRetentionConfig.max_ttl_days를 사용하거나 그렇지 않을 때 만료를 지우려면None를 전달합니다.MemoryRetentionConfig.max_ttl_days이상의 값은 경고와 함께 해당 최대값으로 고정됩니다. 만료된 메모리는 이 클라이언트 API에서 사용할 수 없으며 새로 고칠 수 없습니다. - ttl_anchor
TimeToLiveAnchor– 만료 새로 고침에 대한 선택적 TTL 앵커입니다. 메모리 생성 시간에는TimeToLiveAnchor.CREATED_AT를 사용하고, 동일한 업데이트에 제공된 교체timestamp에는TimeToLiveAnchor.TIMESTAMP를 사용하고,timestamp가 생략된 경우 저장된 이벤트 시간 기록을 사용합니다.ttl_days없이ttl_anchor를 제공하면 스키마 기본 TTL 기간이 사용됩니다. 새로 고침 중ttl_anchor를 생략하면 클라이언트는TimeToLiveAnchor.CREATED_AT를 사용합니다. 표준 시간대가 없는 ISO-8601 시간 기록은 UTC로 처리됩니다. - **kwargs(Any) – 예상치 않은 키워드 인수가 거부되었습니다.
- memory_id
- 반환: 업데이트된 메모리 유사 레코드의 식별자입니다.
- 반환 유형: str
주
생략된 필드는 저장된 레코드에서 보존됩니다. 저장된 범위는 변경되지 않은 상태로 유지됩니다. 메타데이터 바꾸기는 순환적 JSON 병합이 아닌 전체 객체 바꾸기입니다.
method update_memory_async(비동기)
저장된 메모리와 유사한 레코드를 식별자로 비동기적으로 업데이트합니다.
- 매개변수:
- memory_id
str– 업데이트할 메모리 유사 레코드의 식별자입니다. - content
str– 선택적 대체 컨텐츠입니다. 저장된 콘텐츠를 바꾸려면 문자열을 제공하십시오. 생략하면 저장된 내용이 보존됩니다.None전달은 지원되지 않습니다. 현재 값을 유지하려면content를 생략하고, 레코드를 제거하려면delete_memory()를 사용하십시오. - metadata
dict[str, Any] | None– 선택적 대체 메타데이터 매핑입니다. 생략하면 저장된 메타데이터가 보존됩니다. 제공된 경우 저장된 메타데이터 객체를 대체합니다. 이 API는 메타데이터를 심층 병합하지 않습니다. - timestamp
str | None– 이 메모리에 대한 선택적 새 시간 기록입니다. 메모리가 생성된 시기를 나타냅니다. 생략하면 저장된 시간 기록이 보존됩니다. 저장된 시간 기록을 지우고 저장소에서 레코드가 생성된 시간을 사용하려면None을 전달합니다. - ttl_days
int | None– 선택적 만료 새로 고침(일)입니다. 현재 만료를 변경하지 않고 그대로 두려면 이 인수를ttl_anchor와 함께 생략합니다.None를 전달하여 만료를 지웁니다. - ttl_anchor
TimeToLiveAnchor– 만료 새로 고침에 대한 선택적 TTL 앵커입니다. 메모리 생성 시간에는TimeToLiveAnchor.CREATED_AT를 사용하고, 동일한 업데이트에 제공된 교체timestamp에는TimeToLiveAnchor.TIMESTAMP를 사용하고,timestamp가 생략된 경우 저장된 이벤트 시간 기록을 사용합니다.ttl_days없이ttl_anchor를 제공하면 스키마 기본 TTL 기간이 사용됩니다. 새로 고치는 동안ttl_anchor를 생략하면 저장소는TimeToLiveAnchor.CREATED_AT를 사용합니다. - **kwargs(Any) – 예상치 않은 키워드 인수가 거부되었습니다.
- memory_id
- 반환: 업데이트된 메모리 유사 레코드의 식별자입니다.
- 반환 유형: str
주
생략된 필드는 변경되지 않습니다. 이 API에서는 범위 업데이트가 지원되지 않습니다. 메타데이터 바꾸기는 순환적 JSON 병합이 아닌 전체 객체 바꾸기입니다.
방법 update_thread
스레드 메타데이터 및 영구 런타임 구성 업데이트를 유지합니다.
- 매개변수:
- thread_id
str– 업데이트할 스레드의 식별자입니다. - metadata
dict[str, Any] | None– 대화 스레드에 대한 선택적 메타데이터 업데이트입니다. 생략할 경우 저장된 메타데이터는 변경되지 않은 상태로 유지됩니다.None를 전달하면 저장된 메타데이터가 명시적으로 지워집니다. 매핑이 제공되면 저장된 메타 데이터 객체를 대체합니다. - LLM
ILlm– 반환된OracleThread인스턴스에 대한 선택적 LLM 대체입니다. 지속되지는 않지만get_thread및create_thread와 동일한 검증 규칙에 참여합니다. -
extract_memories
bool–자동 메모리 추출을 위한 영구 대체 옵션입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. - max_message_token_length
int– 추출 및 요약 중 사용되는 최대 프롬프트 시간 메시지 크기에 대한 선택적 영구 대체입니다. - message_shortening_input_token_limit
int– 대형 메시지를 줄일 때 LLM으로 전송되는 최대 발췌 크기에 대한 선택적 내구성 대체입니다. -
memory_extraction_window
int–추출 창 크기에 대한 선택적 영구 대체입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
context_summary_update_frequency
int–컨텍스트 요약 새로고침을 트리거하는 추가 메시지 수에 대한 영구 대체 옵션입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_frequency
int–자동 메모리 추출을 트리거하는 추가 메시지 수에 대한 영구 대체 옵션입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_token_limit
int–추출 및 실행 요약 프롬프트 예산에 대한 선택적 영구 대체입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. - context_card_token_limit
int– 컨텍스트 카드에 포함된 요약 및 항목 목록을 작성하는 데 사용되는 LLM 프롬프트의 입력 토큰 예산에 대한 선택적 영구 대체입니다. -
enable_context_summary
bool–실행 중인 컨텍스트 요약이 사용으로 설정된 상태로 유지되는지 여부에 대한 선택적 영구 대체입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_custom_instructions
str | None–메모리 추출 시스템 프롬프트에 추가되는 내구성이 뛰어난 사용자 정의 지침(옵션)입니다.
None를 전달하면 저장된 스레드 레벨 사용자 정의 지침이 지워집니다. 클라이언트 레벨 기본값은 구성 시에도 적용됩니다.정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. -
memory_extraction_inherit_message_metadata
bool | Sequence[str]–소스 메시지에서 자동으로 추출된 메모리로 복사된 메타데이터에 대한 영구 대체 옵션입니다.
정보: 버전 26.6.0부터 더 이상 사용되지 않음: 이 매개변수는 26.6.0에서 더 이상 사용되지 않으며 27.1에서 제거됩니다. 대신
memory_extraction_config를 사용하십시오. - memory_extraction_config
MemoryExtractionConfig– 선택적 그룹화된 영구 추출 구성 업데이트입니다. 제공된 필드는 저장된 스레드 구성에 기록되며 나중에 로드된OracleThread인스턴스 및 이후 백그라운드 추출 작업에서 사용됩니다. - **kwargs(임의) – 추가적인 구현별 옵션입니다.
OracleAgentMemory는 현재 알 수 없는 키워드 인수를 거부합니다.
- thread_id
- 반환: 지속된 메타데이터 및 런타임 구성을 반영하여
OracleThread인스턴스를 업데이트했습니다. - 반품 유형: OracleThread
- 발생 값:
- KeyError – 이 클라이언트 인스턴스에서 스레드 ID를 알 수 없는 경우입니다.
- ValueError – 유효 런타임 구성을 해결한 후 자동 메모리 추출에 사용할 수 있는 LLM이 없는 경우입니다.
주
런타임 구성은 저장된 대화 스레드와 이 호출에 전달된 명시적 우선 적용에서 분석되어 결과를 지속하기 전에 get_thread 의미와 일치합니다. 생략된 메타데이터 및 런타임 구성 업데이트는 이전에 로드된 OracleThread 인스턴스가 아닌 저장된 데이터에서 해결되며 명시적으로 제공된 메타데이터 업데이트 또는 영구 런타임 구성 대체만 다시 기록됩니다. 메타데이터 바꾸기는 순환적 JSON 병합이 아닌 전체 객체 바꾸기입니다. 스레드 소유권은 이 API를 통해 변경될 수 없으므로 user_id 및 agent_id는 변경되지 않습니다. 추출 카운터와 같은 변경 가능한 런타임 상태는 그대로 유지됩니다.
예제
from oracleagentmemory.core import OracleAgentMemory
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
llm=llm,
)
updated = client.update_thread(
"c1",
metadata={"flags": {"vip": True}},
message_shortening_input_token_limit=12_000,
)
updated.message_shortening_input_token_limit
12000
방법 wait_for_memory_extraction
이 클라이언트가 시작한 이전 백그라운드 메모리 추출을 기다립니다.
이 메소드는 이 에이전트 메모리 구성 요소가 소유한 모든 스레드에서 이 OracleAgentMemory 인스턴스를 통해 이미 시작된 백그라운드 추출을 기다립니다. 이 대기가 시작된 후, 다른 에이전트 메모리 구성 요소에 의해 추출이 시작되었거나 다른 프로세스에서 추출이 실행될 때까지는 추출이 시작될 때까지 기다리지 않습니다. 추출 실패는 이 대기에 대해 완료된 것으로 계산됩니다.
- 매개변수: timeout
float | None– 선택적 최대 대기 시간(초)입니다. 기본값은300입니다. 이 에이전트 메모리 구성 요소에 보류 중인 추출이 없을 때까지 기다리려면None를 전달합니다. - 발생: TimeoutError – 이전 백그라운드 추출이 완료되기 전에 시간 초과가 만료될 때 발생합니다.
- 반환 유형: 없음
예제
client = OracleAgentMemory(
connection=db_pool,
embedder=embedder,
memory_extraction_config=MemoryExtractionConfig(extract_memories=False),
)
client.wait_for_memory_extraction(timeout=10)
method wait_for_memory_extraction_async(비동기)
이전 백그라운드 메모리 추출을 비동기적으로 기다립니다.
이 메소드는 wait_for_memory_extraction()와 동일한 동작을 따릅니다.
- 매개변수: timeout
float | None– 선택적 최대 대기 시간(초)입니다. 기본값은300입니다.None를 전달하여 무기한 기다립니다. - 발생: TimeoutError – 이전 백그라운드 추출이 완료되기 전에 시간 초과가 만료될 때 발생합니다.
- 반환 유형: 없음
예제
await client.wait_for_memory_extraction_async(timeout=10)
메모리 추출
클래스 oracleagentmemory.core.MemoryExtractionConfig
기준: object
자동 메모리 추출을 위한 그룹화된 설정입니다.
이 객체를 OracleAgentMemory, create_thread, get_thread 또는 update_thread에 전달하여 자동 추출을 구성합니다. 생략된 필드는 다음 더 넓은 설정에서 상속됩니다. 예를 들어, memory_extraction_frequency 없이 생성된 스레드는 에이전트 메모리 구성 요소 기본값을 사용하며 구성 요소 기본값은 SDK 기본값으로 돌아갑니다.
- 매개변수:
- memory_extraction_window
int– 추출 프롬프트에 사용되는 최근 메시지 창입니다.-1는 추출 프롬프트가 새로 추가된 메시지만 사용함을 의미합니다. 값을 상속하려면 이 필드를 생략합니다. - context_summary_update_frequency
int– 실행 중인 컨텍스트 요약 새로고침 간의 추가된 메시지 수입니다.0미만의 값은 추가될 때마다 새로 고칩니다. 값을 상속하려면 이 필드를 생략합니다. - memory_extraction_frequency
int– 메모리 추출 실행 사이에 추가된 메시지 수입니다.0미만인 값은 매 추가 후 추출됩니다. 값을 상속하려면 이 필드를 생략합니다. - memory_extraction_token_limit
int– 추출 및 요약 프롬프트에 대한 입력 토큰 예산입니다.1미만의 값은 프롬프트 예산 한도를 사용 안함으로 설정합니다. 값을 상속하려면 이 필드를 생략합니다. - extract_memories
bool– 자동 메모리 추출을 사용으로 설정할지 여부입니다. 자동 추출을 사용 안함으로 설정하고 추출 LLM 없이 작업을 허용하려면False로 설정합니다. 값을 상속하려면 이 필드를 생략합니다. - enable_context_summary
bool– 추출 프롬프트가 실행 중인 컨텍스트 요약을 유지 관리하고 사용할지 여부입니다. 값을 상속하려면 이 필드를 생략합니다. - memory_extraction_custom_instructions
str | None– 추출 시스템 프롬프트에 추가되는 선택적 호출자 지침입니다. 저장된 스레드 레벨 지침을 지우려면update_thread에서None를 전달합니다. 값을 상속하려면 이 필드를 생략합니다. - memory_extraction_inherit_message_metadata
bool | collections.abc.Sequence[str]– 소스 메시지에서 추출된 메모리로 복사된 메타 데이터를 제어합니다.True는 모든 소스 메시지 메타데이터를 복사하고,False는 아무것도 복사하지 않으며, 최상위 레벨 메타데이터 키와 일치하는 시퀀스 복사본만 복사합니다. 값을 상속하려면 이 필드를 생략합니다. - extraction_mode
oracleagentmemory.core.extractors.memoryextractionconfig.MemoryExtractionMode–MemoryExtractionMode.INLINE는 쓰기 메소드가 반환되기 전에 자동 추출을 실행합니다.MemoryExtractionMode.BACKGROUND는 원시 쓰기가 성공하고 만기 추출 작업이 백그라운드에서 시도된 후 반환됩니다. 백그라운드 모드에서는 파생된 메모리가 나중에 나타날 수도 있고, 일시적으로 사용되지 않을 수도 있고, 백그라운드 작업을 완료할 수 없는 경우에는 기록되지 않을 수도 있습니다. 예를 들어,update_message()는 나중에 메모리 읽기에 업데이트된 메시지 내용이 반영되기 전에 반환할 수 있습니다. 값을 상속하려면 이 필드를 생략합니다. 더 넓은 값이 구성되지 않은 경우 유효 모드는INLINE입니다. - background_extraction_queue_full_behavior
oracleagentmemory.core.extractors.memoryextractionconfig.BackgroundExtractionQueueFullBehavior– 백그라운드 모드에서 자동 추출을 즉시 대기열에 추가할 수 없을 때 발생하는 동작을 제어합니다.DROP는 경고를 기록하고 기다리지 않고 계속합니다.WAIT_THEN_DROP는 대기열 용량이 구성된 시간 초과까지 대기한 다음 경고를 기록하고 계속합니다.WAIT_THEN_RAISE는 대기열 용량이 구성된 시간 초과까지 대기한 다음 원시 쓰기가 성공한 후TimeoutError를 발생시킵니다. 값을 상속하려면 이 필드를 생략합니다. 더 넓은 값이 구성되지 않은 경우 유효 기본값은DROP입니다. - background_extraction_queue_put_timeout_seconds
float– 백그라운드 모드에서background_extraction_queue_full_behavior이WAIT_THEN_DROP또는WAIT_THEN_RAISE인 경우 자동 추출이 대기열 용량을 기다리는 최대 시간(초)입니다. 값을 상속하려면 이 필드를 생략합니다. 더 넓은 값이 구성되지 않은 경우 유효 기본값은300.0초입니다.
- memory_extraction_window
예제
from oracleagentmemory.core import MemoryExtractionConfig, MemoryExtractionMode
config = MemoryExtractionConfig(
extract_memories=True,
extraction_mode=MemoryExtractionMode.BACKGROUND,
)
클래스 oracleagentmemory.core.MemoryExtractionMode
기준: str, Enum
자동 메모리 추출 작업이 실행되는 시기를 제어합니다.
INLINE는 쓰기 메소드가 반환되기 전에 자동 추출을 실행합니다. BACKGROUND는 원시 쓰기가 성공하고 만기 추출 작업이 백그라운드에서 시도된 후 반환됩니다. 백그라운드 추출은 최선의 작업입니다. 파생된 메모리는 나중에 나타날 수도 있고 백그라운드 작업을 완료할 수 없는 경우에는 기록되지 않을 수도 있습니다.
배경 = '배경'
원시 메시지 지속성 후 돌아가서 백그라운드 작업에서 최선의 추출을 실행합니다.
인라인 = '인라인'
write 메소드가 반환되기 전에 추출을 실행합니다.
클래스 oracleagentmemory.core.BackgroundExtractionQueueFullBehavior
기준: str, Enum
백그라운드 추출이 시간에 대기열에 추가할 수 없을 때 발생하는 동작을 제어합니다.
= '삭제' 삭제
경고를 기록하고 대기열 용량을 사용할 수 없을 때 즉시 계속합니다.
WAIT_THEN_DROP = 'WAIT_THEN_DROP'
대기열 용량이 구성된 시간 초과까지 대기한 다음 경고를 기록하고 계속합니다.
WAIT_THEN_RAISE = 'WAIT_THEN_RAISE'
대기열 용량이 구성된 시간 초과까지 대기한 다음 TimeoutError를 발생시킵니다.