스레드

이 페이지에서는 개발자용 메시지 도우미 유형과 함께 구체적인 Oracle 스레드 핸들을 제공합니다.

Oracle 스레드

클래스 oracleagentmemory.core.OracleThread

기준: IThread

Oracle 저장소가 지원하는 스레드입니다.

이 구현은 스레드 메시지와 수동으로 추가된 메모를 모두 포함 및 저장한 다음 저장된 모든 레코드에 대한 유사성 검색을 지원합니다.

새 OracleThread 인스턴스를 생성하십시오.

예제

from oracleagentmemory.core import OracleAgentMemory
import oracledb
db_pool = oracledb.SessionPool(
    user="YOUR DB USER",
    password="YOUR DB PASSWORD",
    dsn="YOUR DB CONNECT STRING",
)
client = OracleAgentMemory(connection=db_pool, embedder=embedder)
thread = client.create_thread(
    thread_id="c1",
    llm=llm,
    memory_extraction_config=MemoryExtractionConfig(enable_context_summary=True),
)
len(thread.add_messages([{"role": "user", "content": "I love pizza."}]))
1

방법 add_memory

수동 메모리 항목을 추가하고 인덱스화합니다.

예제

thread.add_memory("Remember this preference", memory_id="mem-thread-docs")
'mem-thread-docs'

method add_memory_async(비동기)

메모리를 비동기적으로 추가합니다.

방법 add_messages

스레드에 메시지를 추가하고 색인화합니다.

백그라운드 추출 모드에서 이 메소드는 원시 메시지가 삽입되고 백그라운드에서 백그라운드 추출을 시도한 후에 반환됩니다.

MemoryExtractionMode.BACKGROUND에서는 추출된 메모리가 저장되기 전에 원시 메시지가 지속됩니다. 백그라운드 추출이 대기열에 추가되지 않거나 구성된 대기열 용량 대기가 시간 초과에 도달하면 삽입된 원시 메시지는 저장된 상태로 유지되며 추출된 메모리 없이 호출이 계속되거나 background_extraction_queue_full_behavior에 따라 TimeoutError가 발생합니다.

예제

len(thread.add_messages([{"role": "user", "content": "Thread message from docs"}]))
1

method add_messages_async(비동기)

메시지를 스레드에 비동기적으로 추가하고 인덱스화합니다.

백그라운드 추출 모드에서 이 메소드는 원시 메시지가 삽입되고 백그라운드에서 백그라운드 추출을 시도한 후에 반환됩니다.

MemoryExtractionMode.BACKGROUND에서는 추출된 메모리가 저장되기 전에 원시 메시지가 지속됩니다. 백그라운드 추출이 대기열에 추가되지 않거나 구성된 대기열 용량 대기가 시간 초과에 도달하면 삽입된 원시 메시지는 저장된 상태로 유지되며 추출된 메모리 없이 호출이 계속되거나 background_extraction_queue_full_behavior에 따라 TimeoutError가 발생합니다.

방법 delete_memory

식별자별로 이 정확한 스레드에서 메모리 유사 레코드(예: 메모리, 팩트, 기본 설정 또는 지침)를 삭제합니다.

예제

thread.delete_memory("456")
0

방법 delete_message

식별자별로 정확한 이 스레드에서 메시지 레코드를 삭제합니다.

메시지를 삭제하면 원시 메시지 레코드만 제거됩니다. 파생된 메모리는 추출된 메모리를 어떤 메시지에서 가져온지 아직 추적하지 않으므로 삭제되지 않으므로 검색 가능한 상태로 유지되거나 컨텍스트 카드 출력에 여전히 영향을 줄 수 있습니다. OracleAgentMemory.delete_thread()를 사용하여 연관된 메시지 및 메모리와 함께 스레드를 삭제합니다.

예제

thread.delete_message("123")
0

방법 get_context_card

스레드에 대한 컨텍스트 카드 객체를 반환합니다.

LLM 지원 구현에서 원격 네트워크 I/O를 수행할 수 있는 경우 get_context_card_async을 선호합니다.

그러면 스레드의 기본 검색 범위가 exact_thread_match=False와 함께 사용되므로 동일한 사용자/에이전트에 대한 다른 스레드의 관련 메모리가 포함될 수 있습니다.

예제

thread.add_memory("User likes pizza", memory_id="mem-context-docs")
'mem-context-docs'
len(thread.add_messages([{"role": "user", "content": "Tell me about pizza"}]))
1
"User likes pizza" in thread.get_context_card().content
True
card = thread.get_context_card(
    max_relevant_results=4,
    min_relevant_results_by_type={"memory": 1},
)
len(card.relevant_results or []) <= 4
True

method get_context_card_async(비동기)

스레드에 대한 컨텍스트 카드 객체를 비동기적으로 반환합니다.

예제

card = await thread.get_context_card_async(
    min_relevant_results_by_type={"preference": 1, "guideline": 1},
)
len(card.relevant_results or []) <= 5
True

방법 get_messages

현재 글 모음에 저장된 메시지를 반환합니다.

예제

len(thread.add_messages([{"role": "user", "content": "Stored message example"}]))
1
messages = thread.get_messages()
messages[-1].content
'Stored message example'

method get_messages_async(비동기)

원본 스레드 메시지를 비동기적으로 반환합니다.

방법 get_summary

스레드의 최선의 요약을 반환합니다.

LLM 지원 구현에서 원격 네트워크 I/O를 수행할 수 있는 경우 get_summary_async을 선호합니다.

예제

len(thread.add_messages([{"role": "assistant", "content": "Summary source message"}]))
1
summary = thread.get_summary()
bool(summary.content)
True

method get_summary_async(비동기)

스레드의 최선 조건 요약을 비동기적으로 반환합니다.

조회와 관련된 레코드를 동기적으로 검색합니다.

생략된 범위 필드는 이 스레드의 기본 검색 범위(정확한 사용자 및 에이전트 일치와 이 스레드의 현재 user_id, agent_idthread_id)를 상속합니다. 기본 스레드 검색은 의도적으로 exact_thread_match=False를 벗어나 동일한 사용자/에이전트에 대해 다른 스레드에서 관련 레코드를 반환할 수 있습니다. 결과를 현재 스레드로 제한하려면 exact_thread_match=True를 전달합니다. 명시적 None 범위 값은 해결된 정확한 일치 규칙을 계속 따릅니다. exact_*_match=False는 해당 차원을 제약 없는 상태로 두고 exact_*_match=True는 저장된 None 값만 일치시킵니다.

명시적 max_results 값은 1 이상이어야 합니다. 인수를 생략하면 10의 기본값이 사용됩니다. 상한입니다. 필터가 너무 제한적이거나, 일치하는 레코드가 적거나, 구현별 검색 동작으로 인해 호출이 max_results개 미만의 결과를 반환할 수 있습니다.

method search_async(비동기)

조회와 관련된 레코드를 비동기적으로 검색합니다.

생략된 범위 필드는 이 스레드의 기본 검색 범위(정확한 사용자 및 에이전트 일치와 이 스레드의 현재 user_id, agent_idthread_id)를 상속합니다. 기본 스레드 검색은 의도적으로 exact_thread_match=False를 벗어나 동일한 사용자/에이전트에 대해 다른 스레드에서 관련 레코드를 반환할 수 있습니다. 결과를 현재 스레드로 제한하려면 exact_thread_match=True를 전달합니다. 명시적 None 범위 값은 해결된 정확한 일치 규칙을 계속 따릅니다. exact_*_match=False는 해당 차원을 제약 없는 상태로 두고 exact_*_match=True는 저장된 None 값만 일치시킵니다.

명시적 max_results 값은 1 이상이어야 합니다. 인수를 생략하면 10의 기본값이 사용됩니다. 상한입니다. 필터가 너무 제한적이거나, 일치하는 레코드가 적거나, 구현별 검색 동작으로 인해 호출이 max_results개 미만의 결과를 반환할 수 있습니다.

방법 update_memory

이 스레드가 소유한 메모리 유사 레코드를 업데이트합니다.

method update_memory_async(비동기)

메모리와 유사한 레코드를 비동기적으로 업데이트합니다.

예제

from functools import partial
from oracleagentmemory._async_helpers import run_async_in_sync
memory_id = thread.add_memory("Original memory")
run_async_in_sync(
    partial(thread.update_memory_async, memory_id, content="Updated memory")
) == memory_id
True

방법 update_message

이 정확한 스레드가 소유한 원시 메시지 레코드를 업데이트합니다.

생략된 필드는 저장된 레코드에서 보존됩니다. 저장된 역할 및 시간 기록은 변경되지 않습니다. 콘텐츠를 편집하면 원시 메시지 기록이 업데이트되고, 자동 추출이 사용으로 설정된 경우 SDK가 편집된 메시지 및 이전 기록에서 메모리를 다시 추출할 수 있습니다. INLINE 모드에서는 이 메소드가 반환되기 전에 추출이 완료됩니다. BACKGROUND 모드에서는 원시 메시지 업데이트가 성공하고 백그라운드 추출이 시도된 후 이 메소드가 반환됩니다. 이 후속 작업은 이후 add_messages() 호출에서 사용되는 일반 추출 빈도에 영향을 주지 않습니다. 기존 추출된 메모리는 그대로 유지되지만 편집된 콘텐츠에서 새로 추출된 메모리는 추가될 수 있습니다. 원시 메시지 업데이트 및 나중에 추출된 메모리 쓰기는 자동으로 수행되지 않으므로 백그라운드 작업이 대기열에 추가되지 않거나, 구성된 대기열 용량 대기가 시간 초과에 도달하거나, 나중에 추출 작업이 실패할 경우 추출된 메모리에 이전 메시지 내용이 계속 반영될 수 있습니다. 또한 소스 메시지의 TTL이 변경될 때 추출된 기존 메모리는 원래 만료 상태를 유지합니다.

예제

message_id = thread.add_messages([{"role": "user", "content": "Draft message"}])[0]
thread.update_message(message_id, content="Edited message") == message_id
True

method update_message_async(비동기)

이 정확한 스레드가 소유한 원시 메시지 레코드를 비동기식으로 업데이트합니다.

생략된 필드는 저장된 레코드에서 보존됩니다. 저장된 역할 및 시간 기록은 변경되지 않습니다. 콘텐츠를 편집하면 원시 메시지 기록이 업데이트되고, 자동 추출이 사용으로 설정된 경우 SDK가 편집된 메시지 및 이전 기록에서 메모리를 다시 추출할 수 있습니다. INLINE 모드에서는 이 메소드가 반환되기 전에 추출이 완료됩니다. BACKGROUND 모드에서는 원시 메시지 업데이트가 성공하고 백그라운드 추출이 시도된 후 이 메소드가 반환됩니다. 이 후속 작업은 이후 add_messages() 호출에서 사용되는 일반 추출 빈도에 영향을 주지 않습니다. 기존 추출된 메모리는 그대로 유지되지만 편집된 콘텐츠에서 새로 추출된 메모리는 추가될 수 있습니다. 원시 메시지 업데이트 및 나중에 추출된 메모리 쓰기는 자동으로 수행되지 않으므로 백그라운드 작업이 대기열에 추가되지 않거나, 구성된 대기열 용량 대기가 시간 초과에 도달하거나, 나중에 추출 작업이 실패할 경우 추출된 메모리에 이전 메시지 내용이 계속 반영될 수 있습니다. 또한 소스 메시지의 TTL이 변경될 때 추출된 기존 메모리는 원래 만료 상태를 유지합니다.

예제

message_id = thread.add_messages([{"role": "user", "content": "Draft message"}])[0]
run_async_in_sync(
    partial(thread.update_message_async, message_id, content="Edited message")
) == message_id
True

방법 wait_for_memory_extraction

이 스레드에 대한 이전 백그라운드 메모리 추출을 기다립니다.

이 메소드는 동일한 에이전트 메모리 구성 요소를 통해 이 스레드에서 이전 add_messages(), add_messages_async(), update_message() 또는 update_message_async() 호출에 의해 시작된 백그라운드 추출을 기다립니다. 이러한 호출 중 하나가 이미 종료된 경우 이 메소드는 대기 전에 시작하는 추출을 포함합니다.

이 메소드는 이 대기가 시작된 후, 다른 에이전트 메모리 구성 요소에 의해 추출이 시작되거나 다른 프로세스에서 추출이 실행될 때까지 기다리지 않습니다. 추출 실패는 이 대기에 대해 완료된 것으로 계산됩니다.

예제

thread.wait_for_memory_extraction(timeout=10)

method wait_for_memory_extraction_async(비동기)

이전 백그라운드 메모리 추출을 비동기적으로 기다립니다.

이 메소드는 wait_for_memory_extraction()와 동일한 동작을 따릅니다.

예제

await thread.wait_for_memory_extraction_async(timeout=10)

주: delete_message()는 원시 메시지 행만 삭제합니다. 파생 된 기억은 여전히 검색 가능하거나 컨텍스트 카드에 나타날 수 있습니다. OracleAgentMemory.delete_thread()를 사용하여 연관된 메시지 및 메모리와 함께 스레드를 삭제합니다. 클라이언트 레벨 스레드 삭제는 해당 스레드에 대해 이미 알려진 이전에 수락된 백그라운드 추출을 대기하지만 삭제가 진행 중인 동안 동일한 스레드에서 다른 작업에 대한 전역 동시성 장벽이 아닙니다.

메시지

클래스 oracleagentmemory.apis.thread.Message

기준: object

컨텍스트 카드

클래스 oracleagentmemory.apis.contextcard.ContextCard

기준: ABC

스레드 API에서 반환된 추상 컨텍스트 카드 객체입니다.

등록 정보 content(개요)

클래스 oracleagentmemory.core.contextcard.OracleContextCard

기준: ContextCard

Oracle 스레드에서 반환된 컨텍스트 카드입니다.

등록 정보 content

예제

card = OracleContextCard(summary="ctx")
"<summary>" in card.content and "ctx" in card.content
True

등록 정보 formatted_content

예제

OracleContextCard(summary="").formatted_content
''
card = OracleContextCard(summary="ctx", topics=["travel"])
"<topics>" in card.formatted_content
True

요약

클래스 oracleagentmemory.apis.summary.Summary

기준: ABC

스레드 API에서 반환된 추상 스레드 요약 객체입니다.

등록 정보 content(개요)

클래스 oracleagentmemory.core.summary.OracleSummary

기준: Summary

Oracle 스레드에서 반환된 요약입니다.

예제

summary = OracleSummary(content="Plan the Rome itinerary.")
summary.content
'Plan the Rome itinerary.'
str(summary)
'Plan the Rome itinerary.'

등록 정보 content

예제

OracleSummary(content="Keep the tea preference in mind.").content
'Keep the tea preference in mind.'

등록 정보 formatted_content

예제

OracleSummary(content="Thread recap").formatted_content
'Thread recap'