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-likeConfiguració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_modelUso 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())