尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MLflow AI Gateway 接入 Google PaLM:completions、embeddings 与 chat 三端点配置实战

MLflow AI Gateway 接入 Google PaLM:completions、embeddings 与 chat 三端点配置实战 MLflow AI Gateway 接入 Google PaLMcompletions、embeddings 与 chat 三端点配置实战【免费下载链接】mlflowThe open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.项目地址: https://gitcode.com/GitHub_Trending/ml/mlflow本篇技术指南以 MLflow 仓库中 examples/gateway/palm 示例为骨架讲解如何通过 MLflow AI Gateway 统一接入 Google PaLMPathways Language Model的文本补全、文本向量化和对话生成三大能力。读完本文你将掌握 PaLM 端点的 YAML 配置写法、环境变量密钥注入方式、网关启动流程以及通过mlflow.deployments客户端发起三种请求的完整调用链并了解 Gateway 底层参数转换与请求路由的实现细节。PaLM 示例在 MLflow AI Gateway 中的定位MLflow AI Gateway 允许在单个服务实例上为多个 LLM 提供商配置多个查询端点endpoint每个端点可以绑定不同的提供商、模型版本和端点类型。examples/gateway/palm/目录提供了一个完整可运行的 PaLM 接入示例包含三个文件README.md端点配置说明与 API Key 设置方法config.yaml声明 PaLM 三个端点的完整 YAML 配置example.py使用 Python 客户端实际调用三个端点的可执行脚本。该示例在 examples/gateway/README.md 中与 OpenAI、Anthropic、Cohere、MosaicML 等提供商并列作为配置与验证某个 provider 的标准样板。示例中的端点名称completions、chat、embeddings仅用于说明官方建议在真实业务中改为语义明确的自定义名称避免端点名冲突。三端点配置解析completions / embeddings / chatconfig.yaml 是示例的核心配置文件它在同一个配置文件中声明了三个端点分别对应 PaLM 的三类模型endpoints: - name: completions endpoint_type: llm/v1/completions model: provider: palm name: text-bison-001 config: palm_api_key: $PALM_API_KEY - name: embeddings endpoint_type: llm/v1/embeddings model: provider: palm name: embedding-gecko-001 config: palm_api_key: $PALM_API_KEY - name: chat endpoint_type: llm/v1/chat model: provider: palm name: chat-bison-001 config: palm_api_key: $PALM_API_KEY各字段含义如下字段值说明namecompletions/embeddings/chat端点在网关内的唯一标识后续调用时通过该名称路由请求endpoint_typellm/v1/completions、llm/v1/embeddings、llm/v1/chatMLflow 网关标准化的端点类型统一屏蔽各厂商原生 API 差异model.providerpalm提供商标识映射到源码中的Provider.PALM palm见 mlflow/gateway/config.pymodel.nametext-bison-001等PaLM 具体模型名会被拼接进请求 URL 调用对应的生成接口model.config.palm_api_key$PALM_API_KEY环境变量引用网关启动时解析为真实密钥三个端点的分工是text-bison-001负责文本续写embedding-gecko-001负责把文本转为向量chat-bison-001负责多轮对话。密钥字段的底层校验palm_api_key的写法并非随意命名。在 mlflow/gateway/config.py 中定义了PaLMConfig配置模型它强制要求该字段存在并通过_resolve_api_key_from_input校验器支持两种取值方式直接写明文密钥或写$ENV_VAR_NAME形式的环境变量引用。因此$PALM_API_KEY会在配置加载阶段被解析为环境变量PALM_API_KEY的值密钥本身不会明文落盘在配置文件中。设置 PaLM API Key调用 PaLM 需要 Google 提供的 PaLM API 密钥。设置方式与示例 README 一致将密钥写入环境变量export PALM_API_KEY...请将...替换为在 Google AI 开发者平台申请的密钥。配置中的$PALM_API_KEY引用的正是该环境变量。需要说明的是由于 PaLM 模型系列已逐步被 Gemini 取代当前仓库的PaLMProvider在初始化时会抛出FutureWarning提示“PaLM provider 已弃用并将在未来的 MLflow 版本中移除”见 mlflow/gateway/providers/palm.py。如需长期使用建议评估仓库中同目录下的 Gemini provider 作为迁移方向。启动网关并验证端点按照 examples/gateway/README.md 的流程PaLM 示例同样适用安装带 genai 依赖的 MLflowpip install mlflow[genai]启动网关指定本示例的配置文件mlflow gateway start --config-path examples/gateway/palm/config.yaml --port 7000网关启动后可访问http://127.0.0.1:7000/docs查看交互式 API 文档。通过 Python 客户端调用三个端点example.py 展示了完整的调用代码核心是mlflow.deployments.get_deploy_clientfrom mlflow.deployments import get_deploy_client def main(): client get_deploy_client(http://localhost:7000) print(fPaLM endpoints: {client.list_endpoints()}\n) print(fPaLM completions endpoint info: {client.get_endpoint(endpointcompletions)}\n) # Completions request response_completions client.predict( endpointcompletions, inputs{ prompt: What is the world record for flapjack consumption in a single sitting?, temperature: 0.1, }, ) print(fPaLM response for completions: {response_completions}) # Embeddings request response_embeddings client.predict( endpointembeddings, inputs{input: [Do you carry the Storm Trooper costume in size 2T?]}, ) print(fPaLM response for embeddings: {response_embeddings}) # Chat example response_chat client.predict( endpointchat, inputs{ messages: [ { role: system, content: You are a talented European rapper with a background in US history, }, { role: user, content: Please recite the preamble to the US Constitution as if it were written today by a rapper from Reykjavík, }, ] }, ) print(fPaLM response for chat: {response_chat}) if __name__ __main__: main()在网关运行期间执行python examples/gateway/palm/example.py即可依次观察到三类响应。三类请求的输入约定completions补全入参为prompt字符串可附带temperature等采样参数返回补全文本embeddings向量化入参为input值为字符串列表一次可批量向量化多条文本chat对话入参为messages消息列表每条消息含role与content其中role使用 OpenAI 风格的system/user角色约定。这种“统一网关输入、后端自动适配”的设计正是 MLflow AI Gateway 的价值所在业务代码只需面向一套标准化 Schema 编程切换底层模型时无需改动调用端。源码视角PaLM Provider 的请求转换链路PaLMProvider的实现mlflow/gateway/providers/palm.py揭示了网关是如何把统一的端到端请求转换为 PaLM 原生 API 的其核心逻辑可以概括为三个层次。1. Provider 注册在 mlflow/gateway/provider_registry.py 中PaLMProvider被注册到全局ProviderRegistrykey 为Provider.PALM。网关加载配置时根据model.provider: palm查表找到该类从而把completions等端点路由到正确的 provider 实现。2. 密钥注入与请求地址PaLMProvider._request方法把配置中的palm_api_key放入x-goog-api-key请求头并把请求发往https://generativelanguage.googleapis.com/v1beta3/models/基地址mlflow/gateway/providers/palm.py。结合model.name最终请求路径形如补全{model_name}:generateText对话{model_name}:generateMessage向量{model_name}:batchEmbedText3. 参数名映射与语义适配网关统一参数与 PaLM 原生参数存在命名差异PaLMProvider通过rename_payload_keys完成转换mlflow/gateway/providers/palm.pyMLflow 网关统一参数PaLM 原生参数适用端点stopstopSequencescompletions / chatncandidateCountcompletions / chatmax_tokensmaxOutputTokenscompletionsinputtextsembeddings此外还有两处关键适配温度缩放MLflow 网关的温度范围是 0–2而 PaLM 是 0–1因此 provider 会把网关传入的temperature乘以 0.5 再转发mlflow/gateway/providers/palm.py角色字段重命名chat 请求中 OpenAI 风格的role被改写为 PaLM 的authormessages、examples、context则被统一打包进prompt字段mlflow/gateway/providers/palm.py。同时provider 会拒绝接收 PaLM 原生参数名如直接传stopSequences或candidateCount会返回 422 错误并提示改用网关参数名并针对 chat 端点限制max_tokens的使用——这些都是网关保证请求格式统一的具体手段。响应标准化PaLM 的原始响应经过 provider 加工后被转换为网关统一的 Schema补全与对话响应均含created、model、choices列表和usage统计向量响应则返回data列表每项含embedding向量与index。由于 PaLM API 不返回 token 统计信息usage中的 token 数统一置为Nonemlflow/gateway/providers/palm.py。这意味着调用方拿到的是与 OpenAI 等提供商一致的响应结构可以无缝复用现有的解析代码。测试佐证与验证仓库的测试目录 tests/gateway/providers/test_palm.py 提供了对上述行为的完整验证测试用例构造了与示例配置一致的completions端点配置provider 为palm、模型text-bison通过 mock 拦截aiohttp.ClientSession.post断言请求参数映射、密钥注入与响应转换是否符合预期tests/gateway/providers/test_palm.py。读者在修改或调试 PaLM 接入时可以直接参考或运行该测试文件来确认行为没有回归。小结通过examples/gateway/palm/这份示例我们完成了 PaLM 从配置、启动到三种端点调用的全链路梳理config.yaml声明端点与模型、$PALM_API_KEY注入密钥、example.py通过统一客户端发起请求。底层PaLMProvider则负责参数映射、温度缩放与响应标准化让业务代码始终面向 MLflow 网关的统一 API。结合示例、源码与测试三份证据读者既可以照抄配置文件快速跑通 PaLM 接入也能深入理解网关 provider 的扩展机制为迁移到 Gemini 或接入其他提供商打下基础。【免费下载链接】mlflowThe open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.项目地址: https://gitcode.com/GitHub_Trending/ml/mlflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表