跳轉到主要內容

概述

類型: 框架或平台主要路徑: OpenAI-compatible via OpenAILike支援級別: 透過 OpenAILike 支援
對於 LemonData 而言,更穩健的 LlamaIndex 設定方式是使用 與 OpenAI 相容的整合,而不是內建的 OpenAI 類別。 目前的 LlamaIndex 文件明確建議對第三方 OpenAI 相容端點使用 OpenAILike,因為內建的 OpenAI 類別會從官方模型名稱推斷 metadata。 換句話說:這裡應把 OpenAILike 視為受支援的 LemonData 路徑,而不是內建 OpenAI 類。

安裝

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

基本設定

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.lemondata.cc/v1",
    api_key="sk-your-lemondata-key",
    is_chat_model=True,
)

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

Settings.llm = llm
Settings.embed_model = embed_model

基本用法

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

對話

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)

串流

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

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)

Chat Engine

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

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

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

非同步用法

import asyncio

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

asyncio.run(main())

最佳實務

對於 LemonData 和其他第三方 OpenAI 相容 gateway,優先使用 llama_index.llms.openai_like.OpenAILikellama_index.embeddings.openai_like.OpenAILikeEmbedding
直接在程式碼中傳入 api_base="https://api.lemondata.cc/v1",而不要依賴較舊的 OpenAI 環境變數名稱。
將 chat/reasoning 模型用於綜合生成,並將 text-embedding-3-smalltext-embedding-3-large 用於檢索。