Saltar al contenido principal

Descripción general

Tipo: Framework o PlataformaRuta principal: Compatible con OpenAI mediante OpenAILikeNivel de soporte: Soportado mediante OpenAILike
Para TokenLab, la configuración más robusta de LlamaIndex consiste en utilizar integraciones compatibles con OpenAI en lugar de las clases integradas de OpenAI. La documentación actual de LlamaIndex recomienda explícitamente OpenAILike para endpoints de terceros compatibles con OpenAI, ya que las clases integradas de OpenAI infieren metadatos a partir de los nombres oficiales de los modelos. En otras palabras: trata a OpenAILike como la ruta soportada para TokenLab aquí, no a las clases integradas de OpenAI.

Instalación

pip install llama-index-core \
  llama-index-readers-file \
  llama-index-llms-openai-like \
  llama-index-embeddings-openai-like

Configuración básica

from llama_index.core import Settings
from llama_index.llms.openai_like import OpenAILike
from llama_index.embeddings.openai_like import OpenAILikeEmbedding

llm = OpenAILike(
    model="gpt-5.4",
    api_base="https://api.tokenlab.sh/v1",
    api_key="sk-your-tokenlab-key",
    is_chat_model=True,
)

embed_model = OpenAILikeEmbedding(
    model_name="text-embedding-3-small",
    api_base="https://api.tokenlab.sh/v1",
    api_key="sk-your-tokenlab-key",
)

Settings.llm = llm
Settings.embed_model = embed_model

Uso básico

response = llm.complete("Explain TokenLab in one sentence.")
print(response.text)

LLM OpenAILike mínimo

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    model="claude-sonnet-5",
    api_base="https://api.tokenlab.sh/v1",
    api_key="sk-your-tokenlab-key",
    context_window=200000,
    is_chat_model=True,
    is_function_calling_model=True,
)

Chat

from llama_index.core.llms import ChatMessage

messages = [
    ChatMessage(role="system", content="You are a helpful assistant."),
    ChatMessage(role="user", content="What is the capital of France?")
]

response = llm.chat(messages)
print(response.message.content)

Streaming

for chunk in llm.stream_complete("Write a short poem about AI."):
    print(chunk.delta, end="", flush=True)

Embeddings

vector = embed_model.get_text_embedding("Hello, world!")
print(vector[:5])

RAG con documentos

from llama_index.core import SimpleDirectoryReader, VectorStoreIndex

documents = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(documents)

query_engine = index.as_query_engine()
response = query_engine.query("What is in my documents?")
print(response)

Motor de chat (Chat Engine)

chat_engine = index.as_chat_engine(chat_mode="condense_question")

response = chat_engine.chat("What is TokenLab?")
print(response)

response = chat_engine.chat("How many models does it support?")
print(response)

Uso asíncrono

import asyncio

async def main():
    response = await llm.acomplete("Hello!")
    print(response.text)

asyncio.run(main())

Mejores prácticas

Prefiere llama_index.llms.openai_like.OpenAILike y llama_index.embeddings.openai_like.OpenAILikeEmbedding para TokenLab y otras pasarelas de terceros compatibles con OpenAI.
Pasa api_base="https://api.tokenlab.sh/v1" directamente en el código en lugar de depender de nombres de variables de entorno antiguas de OpenAI.
Usa modelos de chat/razonamiento para síntesis y text-embedding-3-small o text-embedding-3-large para recuperación.