如何將 LlamaIndex 與 CometAPI 集成

CometAPI
AnnaSep 10, 2025
如何將 LlamaIndex 與 CometAPI 集成

CometAPI 為眾多模型(GPT 系列、Anthropic/Claude、Google Gemini 等)提供了一個與 OpenAI 相容的單一閘道。 LlamaIndex(用於建立檢索增強型 LLM 應用的「資料框架」)現在已開放原生 CometAPI LLM 整合——這意味著您可以透過 CometAPI 從 LlamaIndex 呼叫任何模型。

LlamaIndex(建構知識助理的資料架構)現在正式支持 彗星API 作為 LLM 後端。本指南將介紹為什麼要將它們配對、如何設定環境、逐步整合(包含程式碼)、具體的 RAG 用例,以及提高可靠性、成本和可觀察性的技巧。示例如下 LlamaIndex 文檔CometAPI 整合範例.

LlamaIndex 是什麼?它的主要功能是什麼?

LlamaIndex(原名 GPT-Index)是一個資料抽象化和檢索框架,它透過提取文件、建立索引以及為 RAG 風格的應用程式編排檢索+提示工作流程,將大型語言模型 (LLM) 連接到您自己的資料。其主要功能包括文件提取連接器(PDF、Web、資料庫)、向量/關鍵字/圖索引、靈活的查詢引擎以及用於切換 LLM 提供者的抽象層。 LlamaIndex 旨在讓您「將自己的資料」引入任何 LLM,並建立了用於文件分塊、嵌入、檢索和提示編排的管道。

有哪些主要特點?

  • 數據連接器:從文件、資料庫和許多 SaaS 來源中提取。
  • 索引原語:向量儲存索引、樹/圖索引和檢索管道。
  • 查詢引擎:靈活的查詢編排(重新排序、回應合成、多步驟提示)。
  • LLM 適配器:可插入的 LLM 後端 - OpenAI、Anthropic、Vertex 以及現在的 CometAPI 等。
  • 可觀察性和回調:用於追蹤和監控 LLM 調用的鉤子。

什麼是 CometAPI 以及為什麼將它與 LlamaIndex 一起使用?

什麼是 CometAPI?

CometAPI 是一個 API 網關,它透過一個與 OpenAI 相容的 REST 接口,對外公開數百個第三方 AI 模型(LLM、圖像/視訊生成器和嵌入)。您無需為每個模型供應商分別設定不同的 SDK 和金鑰,只需呼叫 CometAPI 的基本 URL,並在請求正文中選擇模型名稱即可。例如 gpt, claude, gemini或各種專用的嵌入/影像引擎。這種「一個 API 對應 500 多個模型」的方法加快了實驗速度,並降低了營運開銷。

為什麼要將 CometAPI 與 LlamaIndex 配對?

LlamaIndex 是一個資料框架,它可以將您的文件轉換為索引(向量和其他索引),並使用 LLM 進行最終答案的合成。由於 CometAPI 採用 OpenAI 風格的 API,因此 LlamaIndex 可以:

  • 使用其 內建的 CometAPI LLM 整合 (推薦),或者
  • 使用 OpenAI/“OpenAI 相容” LLM 和嵌入適配器,方法是指向 api_base 到 CometAPI。

LlamaIndex 已經提供了專門的 CometAPI LLM 包裝器和範例—因此整合是故意簡單的。

集成能帶來什麼好處?

  1. RAG + 靈活的模型選擇 — LlamaIndex 處理資料檢索和即時合成;CometAPI 允許您選擇呼叫的 LLM,而無需重新建構管道。
  2. 成本/延遲優化 — 嘗試使用較便宜或較快的模型進行常規查詢,並使用更高品質的模型進行深度推理。
  3. 供應商可移植性 — 僅透過變更模型名稱或小型客戶端設定來交換模型提供者。
  4. 快速實驗 — 輕鬆實現 A/B 模型,同時保持索引和檢索管道恆定。

先決條件和環境設定是什麼?

帳戶和金鑰

註冊 CometAPI 並從 CometAPI 控制台取得 API 金鑰: https://api.cometapi.com/console/token.(您需要此值來驗證請求。)

Python 和套件

  • 建議使用 Python 3.9+。
  • Jupyter Notebook 或 Python 環境(建議使用 Google Colab 進行互動式測試)。
  • 要安裝的軟體包: llama-index (核心)和 llama-index-llms-cometapi (CometAPI 適配器/整合)
  • 可選:您計劃使用的向量存儲庫(例如, faiss-cpu, pinecone-client等)。 LlamaIndex 有官方/向量商店指南。

環境變量

常見做法:將 CometAPI 金鑰設定為環境變數(例如 COMETAPI_KEY),或直接將金鑰傳遞給 LlamaIndex CometAPI 建構子。 LlamaIndex 文件展示了兩種方法—為了避免歧義和測試,傳遞 api_key= 明確地向構造函數宣告是最安全的。

如何逐步整合 LlamaIndex 和 CometAPI?

以下逐步清單涵蓋了特定的操作:建立帳戶、安裝套件、設定金鑰、配置 LlamaIndex 以使用 CometAPI。

1)如何建立 CometAPI 帳戶並取得 API 金鑰?

  1. 造訪 CometAPI 的網站並註冊一個帳戶。 (他們的主頁和註冊流程會將你引導至 API 控制台。)
  2. 在 CometAPI 控制台中(文件參考 https://api.cometapi.com/console/token),建立或複製您的 API 令牌。您需要此令牌來 COMETAPI_API_KEY (見下文)。

2) 如何安裝 LlamaIndex 和 CometAPI 整合?

執行這些 pip 命令(建議在虛擬環境中執行):

# core LlamaIndex

pip install llama-index

# CometAPI LLM integration for LlamaIndex

pip install llama-index-llms-cometapi

# optional: vectorstore (FAISS example)

pip install faiss-cpu

(If you're in a Jupyter/Colab environment you can prefix with `%pip`.)

注意:

  • LlamaIndex 使用命名空間整合包,避免在核心中打包所有內容。 CometAPI LLM 整合提供如下: llama-index-llms-cometapi.

3) 如何設定 CometAPI 金鑰(環境變數)?

LlamaIndex 的 CometAPI LLM 類別從建構函數參數或環境變數中讀取 API 金鑰。整合程式碼需要環境變數名稱 COMETAPI_API_KEY (您也可以將金鑰直接傳遞給類別建構函式)。它還支援 COMETAPI_API_BASE 如果您必須覆寫 API 基本 URL。

推薦(明確)— 將 API 金鑰傳遞給建構函數。您也可以設定環境變數 COMETAPI_KEY 如果你更喜歡。

import os
# Option A: set env var (optional)

os.environ = "sk-xxxx-your-key"

# Option B: pass the key explicitly (recommended for clarity)

api_key = os.getenv("COMETAPI_KEY", "sk-xxxx-your-key")

在本地設定(Unix/macOS):

export COMETAPI_API_KEY="sk-<your-cometapi-key>"
# optional override:

export COMETAPI_API_BASE="https://www.cometapi.com/console/"

在 Windows 上 (PowerShell):

$env:COMETAPI_API_KEY = "sk-<your-cometapi-key>"

4)配置 LlamaIndex 以使用 CometAPI

以下是一個極簡的端到端範例:提取文件、建立向量索引並發出查詢。此範例使用現代 LlamaIndex API(範例 A:ServiceContext + 向量索引);如果您使用的是舊版/新版 LlamaIndex,請調整名稱。

minimal RAG example using CometAPI as the LLM backend
from llama_index import SimpleDirectoryReader, VectorStoreIndex, ServiceContext
from llama_index.llms.cometapi import CometAPI
from llama_index.core.llms import ChatMessage

# 1) API key and LLM client

api_key = "sk-xxxx-your-key"  # or read from env

llm = CometAPI(
    api_key=api_key,
    model="gpt-4o-mini",      # pick a CometAPI-supported model

    max_tokens=512,
    context_window=4096,
)

# 2) Optional: wrap in ServiceContext (customize prompt settings, embedding model etc)

service_context = ServiceContext.from_defaults(llm=llm)

# 3) Load documents (assumes a ./data directory with files)

documents = SimpleDirectoryReader("data").load_data()

# 4) Build a vector index (FAISS, default vector store)

index = VectorStoreIndex.from_documents(documents, service_context=service_context)

# 5) Query the index

query_engine = index.as_query_engine()
resp = query_engine.query("Summarize the main points in the documents.")
print(resp)
  • 模型名稱和可用功能取決於 CometAPI—請查看 CometAPI 文檔,選擇最適合您用例的模型。 LlamaIndex Comet 轉接器支援聊天、補全模式和串流。
  • 如果您想要串流回應,您可以調用 llm.stream_chat() 或使用 stream_complete 文檔中顯示的變體。

注意:取決於您的 LlamaIndex 版本, as_query_engine 接受 llm 參數可能會有所不同。如果你的版本不接受 lServiceContext 請參閱下面的 LLM。 CometAPI LLM 的實作如下: CometAPI in llama_index.llms.cometapi.

範例 B — 最少、直接使用 CometAPI LLM(為清晰起見建議使用)

import os
from llama_index.llms.cometapi import CometAPI
from llama_index import VectorStoreIndex, SimpleDirectoryReader

# ensure env var set, or pass api_key explicitly

os.environ = "sk-<your-key>"  # or set externally

api_key = os.getenv("COMETAPI_API_KEY")
llm = CometAPI(
    api_key=api_key,          # or pass None to use env var

    model="gpt-4o-mini",      # change model string as required

    max_tokens=256,
    context_window=4096,
)

# build a simple index (local documents)

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

# get a query engine that uses the default llm (you can often pass llm to the query method)

query_engine = index.as_query_engine(llm=llm)   # some LlamaIndex versions accept llm here

response = query_engine.query("Summarize the key points of the corpus.")
print(response)

如何使用 LlamaIndex 的 CometAPI 功能? (進階範例)

1)致電 chat 帶有聊天訊息列表

示例:

# Initialize LLM

llm = CometLLM(
    api_key=api_key,
    max_tokens=256,
    context_window=4096,
    model="gpt-5-chat-latest",
)

# Chat call using ChatMessage

from llama_index.core.llms import ChatMessage

messages = [
    ChatMessage(role="system", content="You are a helpful assistant"),
    ChatMessage(role="user", content="Say 'Hi' only!"),
]
resp = llm.chat(messages)
print(resp)

# Use complete method

resp = llm.complete("Who is Kaiming He")
print(resp)

預期輸出:

  • 聊天回覆:例如, assistant: Hi
  • 完成回應:例如,關於 Kaiming He 的文字描述,包括有關 ResNet 的資訊。

這重現了聊天語義(系統/使用者/助手角色),並且通常產生更可控的輸出。它會發送一條簡單訊息並檢索模型回應。您可以自訂訊息以實現更複雜的互動。

CometAPI 是否支援串流媒體?

是的——CometAPI 支援串流聊天/完成,LlamaIndex 在其 LLM 包裝器上公開了串流方法(stream_chat, stream_complete, streamable 模式)。對於即時應用程序,請使用 stream_chat 或 stream_complete 方法進行串流回應。例如:

# Streaming chat

message = ChatMessage(role="user", content="Tell me what ResNet is")
resp = llm.stream_chat()
for r in resp:
    print(r.delta, end="")

# Streaming completion

resp = llm.stream_complete("Tell me about Large Language Models")
for r in resp:
    print(r.delta, end="")

預期產量: 串流列印回應內容,例如 ResNet 的解釋或大型語言模型的概述,以區塊的形式出現。

說明: stream_chat 和 stream_complete 會逐塊產生回應,適合即時輸出。如果發生錯誤,則會顯示在控制台中。

這與其他相容於 OpenAI 的 LLM 的 LlamaIndex 範例類似,並與 Comet 的串流端點相容。在生產環境中,使用強大的重試/超時邏輯來處理背壓和網路錯誤。

快速切換模型

# try Claude from CometAPI

claude_llm = CometAPI(api_key=api_key, model="claude-3-7-sonnet-latest", max_tokens=300)
svc = ServiceContext.from_defaults(llm=claude_llm)
index = VectorStoreIndex.from_documents(documents, service_context=svc)
print(index.as_query_engine().query("Explain in one paragraph."))

由於 CometAPI 規範了端點,因此更改模型只是建構函數的變更 - 無需提示管道重寫。

技巧和增強技術

如何管理成本和代幣

  • 使用檢索:僅傳送檢索到的上下文,而不是整個語料庫。
  • 嘗試使用較小的模型進行檢索/摘要,並使用較大的模型進行最終答案合成。 CometAPI 讓模型切換變得輕而易舉。

可靠性和速率限制

  • 實施 重試+退避 針對瞬時錯誤。
  • 尊重 CometAPI 速率限制並為每個請求實施令牌預算。追蹤 max_tokens 在構造函數中。

可觀察性和調試

  • 使用 LlamaIndex 回呼管理器擷取提示、回應和令牌使用情況。將這些日誌掛接到您的監控管道。 LlamaIndex 文件涵蓋了可觀察性模式和整合。

快取和延遲

  • 快取 LLM 輸出以供重複查詢或確定性提示(例如標準摘要)。
  • 考慮在第一遍中使用較小、較快的模型,並且僅在需要時升級到更高成本的模型。

安全性

  • 將 CometAPI 金鑰保存在機密儲存(Vault / 雲端機密)中 - 不要在程式碼中進行硬編碼。
  • 如果資料敏感,請確保您選擇的 CometAPI 計劃或模型符合合規性要求。

故障排除清單

  • 錯誤的環境變數:如果 LlamaIndex 找不到鍵,則傳遞 api_key= ,詳見 CometAPI() 構造函數必須明確。 (文檔展示了環境變數和建構函數選項。)
  • 不支援該型號:使用 CometAPI 的模型清單確認模型名稱-並非每個帳戶都存在每個名稱。
  • 索引錯誤:確保文件解析正確(編碼、文件類型)。使用 SimpleDirectoryReader 進行快速測試攝取。
  • 版本漂移:LlamaIndex 正在積極改進(ServiceContext → Settings 遷移)。如果範例失敗,請檢查您安裝版本的文件和遷移指南。

入門

CometAPI 是一個統一的 API 平台,它將來自領先供應商(例如 OpenAI 的 GPT 系列、Google 的 Gemini、Anthropic 的 Claude、Midjourney、Suno 等)的 500 多個 AI 模型聚合到一個開發者友好的介面中。透過提供一致的身份驗證、請求格式和回應處理,CometAPI 顯著簡化了將 AI 功能整合到您的應用程式中的過程。無論您是建立聊天機器人、影像產生器、音樂作曲家,還是資料驅動的分析流程,CometAPI 都能讓您更快地迭代、控製成本,並保持與供應商的兼容性——同時也能充分利用整個 AI 生態系統的最新突破。

首先,探索該模型的功能 游乐场 並諮詢 駱駝指數 以獲得詳細說明。造訪前請確保您已經登入CometAPI並取得API金鑰。 彗星API 提供遠低於官方價格的價格,幫助您整合。

準備出發了嗎? → 立即註冊 CometAPI !

常見問題

如何調試延遲或串流媒體中斷?

  • 使用本機網路擷取(或登入您的 HTTP 用戶端)來檢查流幀。
  • 嘗試一個更簡單的模型來確認網路/SDK 路徑(而不是模型本身)是瓶頸。

我該選擇哪種型號?

  • 使用更小/更便宜的聊天模型(例如, gpt-4o-mini, o4-mini或特定於供應商的緊湊模型)以實現高 QPS 或簡短答案。
  • 為昂貴的推理任務保留大型多模式/思路鏈模型。
  • 基準延遲和成本:CometAPI 的優點之一是在相同的程式碼路徑中切換模型—快速嘗試多個模型。

我應該選擇哪個索引和向量存儲?

  • FAISS 適用於本地/單節點速度。
  • 松果/Weaviate 實現託管規模和多區域可用性(LlamaIndex 透過整合支援多種向量儲存)。請根據規模和延遲進行選擇。
閱讀更多

一個 API 中超過 500 個模型

最高 20% 折扣