ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

使用 LlamaIndex 的 VercelAIGateway 接入 Vercel AI Gateway 统一调用多模型

使用 LlamaIndex 的 VercelAIGateway 接入 Vercel AI Gateway 统一调用多模型 使用 LlamaIndex 的 VercelAIGateway 接入 Vercel AI Gateway 统一调用多模型【免费下载链接】llama_indexLlamaIndex is the leading document agent and OCR platform项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index本指南围绕 LlamaIndex 项目中llama-index-llms-vercel-ai-gateway集成包展开讲解如何通过统一的VercelAIGateway类以 OpenAI 兼容协议访问 Vercel AI Gateway从而在 LlamaIndex 应用中用一套代码调用 Anthropic Claude、OpenAI GPT 等多家大模型。读完本文你将掌握该 LLM 集成的安装方法、三种凭证配置方式的优先级、常用参数的含义与默认值以及普通/流式、同步/异步四类对话接口的完整调用方式并可结合实际源码理解其内部实现原理。集成包概览与定位VercelAIGateway是 LlamaIndex 官方 LLM 集成家族中的一员位于仓库的llama-index-integrations/llms/llama-index-llms-vercel-ai-gateway/目录。Vercel AI Gateway 本质上是统一的多模型网关对外暴露 OpenAI 兼容的/v1接口开发者只需面向网关编程即可在后端灵活路由到不同厂商的模型。在代码实现层面VercelAIGateway并未从零实现大模型协议而是继承自同为集成包的OpenAILike见 base.py后者又是对 OpenAI 客户端的一层薄封装。因此VercelAIGateway会自动获得 chat、complete、stream 及对应 async 版本的全部能力并在类文档字符串中声明了其适用于对话chatting、流式输出streaming与提示补全completing prompts三类任务。从包的元数据pyproject.toml可以看到其运行依赖仅为两项llama-index-llms-openai-like0.5.0,0.6与llama-index-core0.13.0,0.15并支持 Python3.10,4.0属于轻量、低耦合的接入层实现。安装与导入在 LlamaIndex 环境中安装该集成包即可使用pip install llama-index-llms-vercel-ai-gateway pip install llama-index # 若尚未安装核心框架包安装完成后从llama_index.llms.vercel_ai_gateway模块导入VercelAIGateway类包级导出定义见init.pyfrom llama_index.llms.vercel_ai_gateway import VercelAIGateway from llama_index.core.llms import ChatMessage凭证配置三种方式的优先级与适用场景调用 Vercel AI Gateway 需要先取得凭证。依据 base.py 中的类文档及构造逻辑凭证的来源按优先级从高到低为直接向api_key参数传入API Key 或 OIDC Token环境变量VERCEL_AI_GATEWAY_API_KEY环境变量VERCEL_OIDC_TOKEN适用于部署在 Vercel 平台、通过 OIDC 身份联邦获取临时凭证的场景。其中第 2、3 种环境变量回退逻辑在源码中有清晰体现见 base.py当未显式传api_key时先尝试读取VERCEL_AI_GATEWAY_API_KEY读取失败抛出ValueError时再回退读取VERCEL_OIDC_TOKEN。相应地仓库测试文件 test_vercel_ai_gateway.py 分别用test_environment_variable_fallback与test_oidc_token_fallback两个用例验证了这两级回退行为。获取到 API Key 或 OIDC Token 后即可按下面的方式实例化 LLM# 方式一直接在构造器中传 API Key / OIDC Token llm VercelAIGateway( api_keyyour-api-key, # 或 OIDC Token max_tokens64000, context_window200000, modelanthropic/claude-4-sonnet, ) # 方式二通过环境变量 VERCEL_AI_GATEWAY_API_KEY 或 VERCEL_OIDC_TOKEN 提供凭证 llm VercelAIGateway( max_tokens64000, context_window200000, modelanthropic/claude-4-sonnet, )需要特别说明的是上方代码中的max_tokens、context_window数值仅作示例展示实际取值必须以你在 Vercel AI Gateway 控制台「AI Gateway → Model List」中所选模型的真实规格为准例如某个模型上下文窗口为 20 万 token、最大输出为 64000 token你才应填入对应数值切勿照搬示例否则可能超出模型能力而报错。常用参数详解与默认值VercelAIGateway构造时涉及的关键参数含义如下参数说明默认值model经由 Vercel AI Gateway 使用的模型标识格式如anthropic/claude-4-sonnet、openai/gpt-4。可用模型及其上下文窗口可在 Vercel 控制台的 AI Gateway → Model List 中查看anthropic/claude-4-sonnetcontext_window模型的最大上下文 token 数需大于 0应匹配所选模型规格3900来自DEFAULT_CONTEXT_WINDOW见 constants.pytemperature采样温度控制输出的随机性0.1DEFAULT_TEMPERATUREmax_tokens单次生成的最大输出 token 数256DEFAULT_NUM_OUTPUTSapi_base网关的 OpenAI 兼容接口地址https://ai-gateway.vercel.sh/v1见 base.pyapi_key网关访问凭证API Key 或 OIDC TokenNone支持环境变量回退default_headers自定义请求头可覆盖默认的http-referer与x-titleNoneadditional_kwargs附加到请求体的额外参数Nonemax_retriesAPI 调用失败时的重试次数5is_chat_model模型是否走对话端点由 Field 默认置为True见 base.pyTrue其中api_base同样支持环境变量覆盖构造逻辑会先通过get_from_param_or_env从参数或VERCEL_AI_GATEWAY_API_BASE环境变量中解析最终地址见 base.py这对自建网关代理或本地调试场景很实用。测试文件中的 test_custom_api_base 与 test_custom_context_window 也分别验证了自定义地址与上下文窗口的覆盖能力。请求头的自动注入机制使用 Vercel AI Gateway 时网关通常依赖两个自定义请求头来识别流量来源http-referer来源站点与x-title应用/项目标题。源码中预先设置了默认组合gateway_headers { http-referer: https://www.llamaindex.ai/, x-title: LlamaIndex, }如果传入default_headers则会逐键覆盖默认值gateway_headers.update(default_headers)随后整体透传给父类作为请求头见 base.py。也就是说若你的应用运行在自己的站点上建议显式配置这两个头以准确标识自身例如llm VercelAIGateway( api_keyyour-api-key, modelanthropic/claude-4-sonnet, default_headers{ http-referer: https://myapp.com/, x-title: My App, }, )对话与补全的完整调用示例生成对话响应chat将对话历史组织为ChatMessage列表传给chat即可获得完整响应messages [ ChatMessage(rolesystem, contentBe precise and concise.), ChatMessage(roleuser, contentTell me a joke), ] resp llm.chat(messages) print(resp)流式对话stream_chat需要逐字输出的场景如打字机效果可改用stream_chat逐块读取增量deltamessage ChatMessage(roleuser, contentTell me a story in 250 words) resp llm.stream_chat([message]) for r in resp: print(r.delta, end)提示补全complete不依赖多轮消息、只需单条 prompt 时可直接使用completeresp llm.complete(Tell me a joke) print(resp)流式补全stream_complete与stream_chat类似stream_complete返回增量式结果resp llm.stream_complete(Tell me a story in 250 words) for r in resp: print(r.delta, end)异步接口在并发场景下的调用方式在 FastAPI 服务、异步代理等场景中VercelAIGateway继承自 OpenAI 客户端体系原生支持achat、acomplete、astream_chat、astream_complete四个异步方法。仓库测试对每种异步方法均有覆盖例如 test_achat 与 test_astream_chat# 异步对话 messages [ ChatMessage(rolesystem, contentYou are a helpful assistant.), ChatMessage(roleuser, contentWhat is the largest planet in our solar system?), ] response await llm.achat(messages) # 异步流式补全 stream await llm.astream_complete(List the first 5 planets in the solar system:) async for chunk in stream: print(chunk.delta, end)编写异步用例时需注意由于本项目测试以asyncio_mode auto运行见 pyproject.tomlasync def test_*会被自动收集为异步测试无需显式加装饰器。与 LlamaIndex 核心框架的协同使用接入后VercelAIGateway实例就是一个标准的 LlamaIndexLLM抽象实现可以直接注入到索引、查询引擎、Agent 等高层组件中例如作为Settings.llm全局替换默认大模型让 RAG 链路整体经由 Vercel AI Gateway 路由到指定厂商模型。这也是该集成最大的实用价值底层无论切换 Claude 还是 GPT上层基于 LlamaIndex 构建的检索问答逻辑几乎无需改动只需调整model参数与对应的context_window。从源码看实现要点小结梳理 base.py 的完整实现可提炼出以下关键设计基于 OpenAI 兼容协议的继承式集成VercelAIGateway直接继承OpenAILike因此对话/补全/流式/异步等能力全部复用 OpenAI 客户端的成熟实现无需为网关重复造轮子三来源凭证解析api_key参数 →VERCEL_AI_GATEWAY_API_KEY→VERCEL_OIDC_TOKEN由内层try/except实现依次回退网关地址默认指向 Vercel 官方端点https://ai-gateway.vercel.sh/v1同时支持参数或VERCEL_AI_GATEWAY_API_BASE环境变量覆盖自动注入流量标识请求头默认携带http-referer与x-title可通过default_headers整体覆盖类标识常量class_name()固定返回VercelAIGateway_LLM见 base.py该名称被 LlamaIndex 的序列化/反序列化机制用于识别类实例。若想继续深入可阅读该集成包的 README.md 与完整测试文件 test_vercel_ai_gateway.py其中覆盖了从初始化、默认值校验到各 Mock 客户端同步/异步调用行为的全部用例可作为自行验证时的参考基线。【免费下载链接】llama_indexLlamaIndex is the leading document agent and OCR platform项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表