Frameworks y plataformas

LlamaIndex

Integra TokenLab con LlamaIndex utilizando integraciones compatibles con OpenAI

Descripción general

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.6-terra",
    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

En esta página