LLM e integraciones

Esta página presenta las interfaces abstractas utilizadas para conectar LLM y embebedores a la memoria del agente de Oracle.

Interfaz de LLM

clase oracleagentmemory.apis.llms.ILlm

Bases: ABC

Interfaz abstracta para la llamada de LLM.

method generate (resumen)

Generar una respuesta de un LLM de forma síncrona.

method generate_async (abstract, async)

Generar una respuesta de forma asíncrona desde un LLM.

Respuestas de LLM

clase oracleagentmemory.apis.llms.LlmResponse

Bases: object

Una pequeña respuesta normalizada devuelta por ILlm.

texto

Contenido de texto generado principal.

Interfaz de incrustación

clase oracleagentmemory.apis.IEmbedder

Bases: ABC

Interfaz abstracta para incrustadores de texto.

method embed (resumen)

Embeber un lote de textos en una matriz 2D float32 NumPy.

method embed_async (abstract, async)

Embeber un lote de textos en una matriz 2D float32 NumPy.

propiedad embedding_dimension

Las subclases pueden sustituir esta propiedad cuando el ancho de embebido se conoce a partir de la configuración o los metadatos del proveedor. La implantación por defecto sondea embed() una vez y almacena en caché el tamaño del resultado.

propiedad max_input_tokens

Las subclases pueden sustituir esta propiedad cuando el presupuesto de entrada del modelo se conoce a partir de metadatos de configuración o proveedor. La implantación por defecto valida un sondeo con un tamaño estimado de tokens de entrada 512 una vez y almacena en caché 512 como una reserva conservadora. No ejecuta un tokenizador de modelo localmente, por lo que los emisores de llamadas deben definir max_input_tokens manualmente cuando se conozca el presupuesto de entrada real del modelo.

Adaptadores LiteLLM

clase oracleagentmemory.core.llms.LlmApiType

Bases: str, Enum

Familias de API compatibles con OpenAI admitidas para Llm.

CHAT_COMPLETIONS = 'CHAT_COMPLETIONS'

RESPONSES = 'respuestas'

clase oracleagentmemory.core.llms.Llm

Bases: ILlm

Adaptador para generar respuestas de modelo.

Cree un adaptador de LLM.

Ejemplos

Los modelos de OCI Generative AI utilizan los identificadores de modelo "oci/..." de LiteLLM. Una configuración común es transferir los detalles de autenticación de clave de API de OCI del archivo de configuración de OCI estándar a través de argumentos de palabra clave específicos de LiteLLM. El SDK de Python de OCI no está instalado en este paquete; las aplicaciones que ya dependen de él también pueden transferir un objeto oci_signer.

import configparser
from pathlib import Path
parser = configparser.RawConfigParser()
parser.read(Path("~/.oci/config").expanduser())
cfg = parser["DEFAULT"]
key_file = Path(cfg["key_file"]).expanduser()
oci_llm = Llm(
    model="oci/openai.gpt-oss-120b",
    oci_compartment_id="ocid1.compartment.oc1..example",
    oci_region=cfg.get("region", "us-chicago-1"),
    oci_user=cfg["user"],
    oci_fingerprint=cfg["fingerprint"],
    oci_tenancy=cfg["tenancy"],
    oci_key_file=str(key_file),
)
oci_llm.generate("Reply with OK.")

Los modelos alojados en OpenAI utilizan identificadores de modelo LiteLLM como "openai/gpt-5.1" y una clave de API de OpenAI. Chat Completions es la familia de API por defecto.

openai_llm = Llm(
    model="openai/gpt-5.1",
    api_key="sk-example",
    temperature=0,
    max_tokens=128,
)
openai_llm.model
'openai/gpt-5.1'
openai_llm.generate("Reply with OK.")

Utilice api_type=LlmApiType.RESPONSES cuando se deba llamar al modelo de destino a través de la API de respuestas de OpenAI en lugar de las finalizaciones de chat.

responses_llm = Llm(
    model="openai/gpt-5.4",
    api_key="sk-example",
    api_type=LlmApiType.RESPONSES,
    reasoning_effort="high",
    stream=True,
)
responses_llm.model
'openai/gpt-5.4'

Los servidores compatibles con OpenAI autoalojados, incluida la vLLM, se llaman con un identificador de modelo "openai/..." más la URL base /v1 del servidor. Transfiera un valor api_key nominal, como "none", cuando el punto final no aplique la autenticación.

vllm_llm = Llm(
    model="openai/openai/gpt-oss-120b",
    api_base="http://localhost:8000/v1",
    api_key="none",
    stream=True,
)
vllm_llm.model
'openai/openai/gpt-oss-120b'
vllm_llm.generate("Reply with OK.")

método generate

Generación de una respuesta.

method generate_async (async)

Generar una respuesta de forma asíncrona.

clase oracleagentmemory.core.embedders.Embedder

Bases: IEmbedder

Embebido respaldado por el profesional asistencial.

Cree un embebido respaldado por un proveedor.

Ejemplos

Los modelos de integración de OCI Generative AI utilizan identificadores de modelo "oci/...". Una configuración común es transferir los detalles de autenticación de clave de API de OCI del archivo de configuración de OCI estándar a través de argumentos de palabra clave específicos de LiteLLM. El SDK de Python de OCI no está instalado en este paquete; las aplicaciones que ya dependen de él también pueden transferir un objeto oci_signer.

import configparser
from pathlib import Path
parser = configparser.RawConfigParser()
parser.read(Path("~/.oci/config").expanduser())
cfg = parser["DEFAULT"]
key_file = Path(cfg["key_file"]).expanduser()
oci_embedder = Embedder(
    model="oci/cohere.embed-english-v3.0",
    oci_compartment_id="ocid1.compartment.oc1..example",
    oci_region=cfg.get("region", "us-chicago-1"),
    oci_user=cfg["user"],
    oci_fingerprint=cfg["fingerprint"],
    oci_tenancy=cfg["tenancy"],
    oci_key_file=str(key_file),
)
oci_embedder.embed(["hello world"])

Los modelos de incrustación alojados en OpenAI utilizan identificadores como "openai/text-embedding-3-small" con una clave de API de OpenAI.

openai_embedder = Embedder(
    model="openai/text-embedding-3-small",
    api_key="sk-example",
    truncate_prompt_tokens=8192,
)
openai_embedder.model
'openai/text-embedding-3-small'
openai_embedder.embed(["hello world"])

Los servidores embebidos compatibles con OpenAI autoalojados, incluida vLLM, utilizan el prefijo de proveedor "hosted_vllm/..." con la URL base /v1 del servidor.

vllm_embedder = Embedder(
    model="hosted_vllm/sentence-transformers/all-MiniLM-L6-v2",
    api_base="http://localhost:8000/v1",
)
vllm_embedder.model
'hosted_vllm/sentence-transformers/all-MiniLM-L6-v2'
vllm_embedder.embed(["hello world"])

método embed

Incruste un lote de textos con el profesional asistencial configurado.

method embed_async (async)

Embeber de forma asíncrona un lote de textos mediante el proveedor configurado.

propiedad embedding_dimension

Notas

Se devuelve un valor proporcionado por el constructor sin ponerse en contacto con el proveedor. De lo contrario, la propiedad sondea una vez y almacena en caché el resultado.

propiedad max_input_tokens

Notas

Se devuelve un valor proporcionado por el constructor sin ponerse en contacto con el proveedor. De lo contrario, la propiedad valida un sondeo de proveedor con un tamaño estimado de tokens de entrada 512 y almacena en caché 512 como una reserva conservadora. No ejecuta un tokenizador de modelo localmente, por lo que debe definir max_input_tokens manualmente desde el presupuesto de entrada documentado del modelo cuando sea importante la precisión.

Embebedores de Oracle DB

clase oracleagentmemory.core.embedders.OracleDBEmbedder

Bases: IEmbedder

Embeber texto llamando a Oracle Database embebiendo SQL.

Este embebido mantiene intacto el contrato de embebido existente del paquete al delegar la generación de embebido en la base de datos a través de SQL. La incrustación directa prefiere VECTOR_EMBEDDING para las configuraciones de modelo que residen en la base de datos y vuelve a DBMS_VECTOR_CHAIN.UTL_TO_EMBEDDING cuando la configuración del vectorizador necesita la superficie del parámetro del proveedor JSON.

Cree un embebido respaldado por la ejecución de SQL de Oracle Database.

Ejemplos

Utilice un pool de conexiones de Oracle y un modelo de embebido que reside en la base de datos:

import oracledb
pool = oracledb.create_pool(
    user="scott",
    password="tiger",
    dsn="dbhost.example.com/orclpdb",
)
embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    embedding_dimension=768,
)
embedder.embed(["hello world"])

Los nombres de modelo cualificados para el esquema se pueden utilizar cuando el esquema conectado tiene privilegios en un modelo propiedad de otro esquema:

shared_embedder = OracleDBEmbedder(
    connection=pool,
    model="MY_OTHER_SCHEMA.MY_ONNX_MODEL",
    embedding_dimension=768,
)
shared_embedder.embed(["hello world"])

Los prefijos específicos de la consulta se pueden configurar sin cambiar la API del almacén:

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    query_prefix="search_document: ",
)
embedder.embed(["pizza"], is_query=True)

método embed

Embeber un lote de textos ejecutando SQL en Oracle Database.

Ejemplos

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
)
matrix = embedder.embed(["alpha", "beta"])
matrix.shape[0]
2

method embed_async (async)

Embeber de forma asíncrona un lote de textos con Oracle Database SQL.

Ejemplos

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
)
matrix = await embedder.embed_async(["hello"])
matrix.shape
(1, 384)

propiedad embedding_dimension

Notas

Se devuelve un valor proporcionado por el constructor sin ponerse en contacto con el modelo de base de datos. De lo contrario, la propiedad sondea una vez y almacena en caché el resultado para accesos futuros.

Ejemplos

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    embedding_dimension=768,
)
embedder.embedding_dimension
768

método get_vectorizer_config_json

Devuelve JSON de preferencia del vectorizador de Oracle para este modelo de base de datos.

La misma configuración de modelo se utiliza mediante incrustación directa y mediante índices híbridos gestionados. La incrustación directa la utiliza para decidir si VECTOR_EMBEDDING puede representar el modelo de base de datos configurado o si DBMS_VECTOR_CHAIN.UTL_TO_EMBEDDING es necesario para el JSON del proveedor. La indexación híbrida la transfiere a DBMS_VECTOR_CHAIN.CREATE_PREFERENCE y, a continuación, el pipeline del vectorizador de Oracle posee el trabajo de embebido para ese índice.

Ejemplos

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    embedding_dimension=768,
)
embedder.get_vectorizer_config_json()
'{"model":"DOC_MODEL"}'
custom_embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    input_name="TEXT",
    embedding_dimension=768,
)
custom_embedder.get_vectorizer_config_json()
'{"model":"DOC_MODEL","input_name":"TEXT"}'
shared_embedder = OracleDBEmbedder(
    connection=pool,
    model="MY_OTHER_SCHEMA.MY_ONNX_MODEL",
    embedding_dimension=768,
)
shared_embedder.get_vectorizer_config_json()
'{"model":"MY_OTHER_SCHEMA.MY_ONNX_MODEL"}'

propiedad max_input_tokens

Notas

Se devuelve un valor proporcionado por el constructor sin ponerse en contacto con el modelo de base de datos. De lo contrario, la propiedad valida un sondeo de modelo de base de datos con un tamaño estimado de tokens de entrada 512 y almacena en caché 512 como una reserva conservadora. No ejecuta un tokenizador de modelo localmente, por lo que debe definir max_input_tokens manualmente desde el presupuesto de entrada documentado del modelo cuando sea importante la precisión.

Ejemplos

embedder = OracleDBEmbedder(
    connection=pool,
    model="DOC_MODEL",
    max_input_tokens=2048,
)
embedder.max_input_tokens
2048