MLflow AI Gateway 快速上手指南:安装、配置、启动与多 Provider 请求测试
2026/9/12 7:28:17 网站建设 项目流程

MLflow AI Gateway 快速上手指南:安装、配置、启动与多 Provider 请求测试

【免费下载链接】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 AI Gateway 是 MLflow 提供的一套统一 AI 网关服务,它把 OpenAI、Anthropic、Cohere、Mistral、MosaicML 等多家 LLM 提供商的 API 抽象为一组标准化的 HTTP 端点,让应用只需面对一份统一配置即可路由到任意模型服务。本文以仓库中 examples/gateway 目录的实战示例为主线,完整演示从安装mlflow[genai]、编写端点配置文件、设置访问密钥、启动网关、打开交互式 API 文档到用 Python 客户端发送测试请求的全流程,并逐项剖析配置文件结构与各 Provider 的差异化参数,帮助你在本地快速搭建一个可用的 LLM 网关。

概述:这个目录里有什么

examples/gateway目录为 MLflow AI Gateway 的每个受支持 Provider 提供了"开箱即用"的示例,每个子目录通常包含三类文件:

  • README.md:该 Provider 的 API Key 获取方式与配置说明;
  • config.yaml:可直接参考的端点(endpoint)配置文件;
  • example.py:用 Python 客户端向该 Provider 端点发送测试请求的可执行脚本。

以 openai 为例,它同时演示了 Gateway 支持的全部三种端点类型:chat、completions 与 embeddings。在配置一个真实实例时,可以同时在配置文件中声明多个 Provider、多种端点类型以及多个模型版本,每个查询端点(endpoint)由网关统一托管。

使用这些配置作为大规模端点配置的模板时,务必修改其中的占位名称(如 "completions"、"chat"、"embeddings"),避免端点名冲突。示例中的名称仅为清晰起见而设,真实场景应为端点定义有意义的名称,以消除歧义并最大程度降低命名碰撞风险。

第一步:安装 MLflow AI Gateway

MLflow AI Gateway 作为 MLflow 的genai扩展发布,推荐直接从 PyPI 安装:

# 从 PyPI 安装 pip install 'mlflow[genai]'

如果你希望使用最新构建版本或参与开发,也可以从仓库源码安装:

# 从仓库安装 pip install -e '.[genai]'

安装完成后,即可在命令行中使用mlflow gateway子命令(mlflow gateway start等)。

第二步:理解端点配置文件结构

Gateway 的核心是 YAML 格式的配置文件,顶层为endpoints列表,每个端点包含以下关键字段:

字段说明示例值
name端点名称,客户端调用时使用的标识chat
endpoint_type端点类型,即统一的路由类型llm/v1/chatllm/v1/completionsllm/v1/embeddings
model.provider模型提供商标识openaianthropiccohere
model.name提供商侧的模型名称gpt-4o-miniclaude-1.3-100k
model.config提供商初始化参数,至少包含 API Key(支持$ENV_VAR环境变量引用)openai_api_key: $OPENAI_API_KEY
limit可选的速率限制配置renewal_period: minutecalls: 10

端点类型统一使用llm/v1/...前缀,将各家提供商差异化的 API 归一为三种标准接口:对话补全(chat)、文本补全(completions)与向量化嵌入(embeddings)。limit字段用于控制单位时间内的调用配额,例如 OpenAI 示例中的renewal_period: minute+calls: 10表示每分钟最多允许 10 次调用,可在配置层面为不同端点设置不同的流量策略。

以 OpenAI 配置 为例,一份同时声明三种端点的完整配置如下:

endpoints: - name: chat endpoint_type: llm/v1/chat model: provider: openai name: gpt-4o-mini config: openai_api_key: $OPENAI_API_KEY limit: renewal_period: minute calls: 10 - name: completions endpoint_type: llm/v1/completions model: provider: openai name: gpt-4o-mini config: openai_api_key: $OPENAI_API_KEY - name: embeddings endpoint_type: llm/v1/embeddings model: provider: openai name: text-embedding-ada-002 config: openai_api_key: $OPENAI_API_KEY

注意openai_api_key: $OPENAI_API_KEY这种写法:配置值中的$VAR会在网关启动时从进程环境变量中读取,从而避免把密钥明文写死在配置文件中。

各 Provider 配置示例与端点支持差异

每个 Provider 允许的端点类型不同,初始化参数也各异。主 README 罗列了九家 Provider 的配置示例,以下逐一点评其配置要点,完整文件均可直接打开参考。

OpenAI(三种端点全支持)

配置示例 展示了 chat / completions / embeddings 三种端点,模型分别为gpt-4o-mini(chat、completions)与text-embedding-ada-002(embeddings),详见上文的完整配置。密钥通过$OPENAI_API_KEY环境变量注入。

AzureOpenAI(同一 OpenAI 协议,多一套 Azure 专属参数)

AzureOpenAI 配置 在model.config中除了openai_api_key还要求以下字段:

参数说明示例值
openai_api_type认证方式,azure(API Key)或azuread(AAD Token)"azure"
openai_api_key密钥或 AAD Token$OPENAI_API_KEY/$AZURE_AAD_TOKEN
openai_deployment_name你的 Azure 部署名称{your_deployment_name}
openai_api_baseAzure 资源端点地址https://{your_resource_name}-azureopenai.openai.azure.com/
openai_api_versionAPI 版本号"2023-05-15"

同一个配置中,chat 与 embeddings 端点使用azure类型认证,completions 端点则演示了azuread类型(密钥换成$AZURE_AAD_TOKEN),说明同一份配置内可以对不同端点使用不同的 Azure 认证方式。

Anthropic

配置 仅声明一个 completions 端点,模型为claude-1.3-100k,密钥参数为anthropic_api_key。获取密钥的方法参见 Anthropic README:创建账户并订阅 Anthropic 服务后,通过如下命令导出:

export ANTHROPIC_API_KEY=...

Cohere

配置 声明 completions 与 embeddings 两个端点,模型分别为commandembed-english-light-v2.0,密钥参数为cohere_api_key

MosaicML

配置 声明 completions(mpt-7b-instruct)、embeddings(instructor-xl)与 chat(llama2-70b-chat)三个端点,密钥参数为mosaicml_api_key

AI21 Labs

配置 声明一个 completions 端点,模型为j2-mid,密钥参数为ai21labs_api_key

PaLM(Google)

配置 声明 completions(text-bison-001)、embeddings(embedding-gecko-001)与 chat(chat-bison-001)三个端点,密钥参数为palm_api_key

Mistral

配置 声明 completions(mistral-tiny)与 embeddings(mistral-embed)两个端点,密钥参数为mistral_api_key

TogetherAI

配置 声明 completions(mistralai/Mixtral-8x7B-v0.1)、chat(mistralai/Mixtral-8x7B-Instruct-v0.1)与 embeddings(togethercomputer/m2-bert-80M-8k-retrieval)三个端点,密钥参数为togetherai_api_key。注意 TogetherAI 的模型名称保留了完整的组织/模型格式,直接对应其在平台上的模型标识。

除了上述九家,目录中还包含 bedrock、gemini、huggingface、mlflow_models、plugin(自定义 Provider 插件机制)与 uc_functions 等示例,进一步扩展了可接入的服务范围。

第三步:设置访问密钥

各 Provider 的 API Key 获取方式不同,详细方法见各子目录下的 README(例如 OpenAI 与 Anthropic)。核心模式一致:先在服务商平台申请密钥,再导出为环境变量,供配置文件中的$VAR引用:

export OPENAI_API_KEY=... export ANTHROPIC_API_KEY=... export COHERE_API_KEY=...

确保启动网关的终端会话中已正确设置所用 Provider 对应的环境变量,否则网关在读取$VAR时会因找不到对应值而报错。

第四步:启动 MLflow AI Gateway

配置文件和密钥就绪后,即可启动网关。--config-path指向 Provider 的配置文件,--port指定监听端口:

mlflow gateway start --config-path examples/gateway/<provider>/config.yaml --port 7000 # 例如使用 OpenAI 配置: mlflow gateway start --config-path examples/gateway/openai/config.yaml --port 7000

<provider>替换为你所选 Provider 配置文件的实际路径。网关启动后即在本机指定端口(如 7000)提供统一的 LLM API 服务。

第五步:访问交互式 API 文档

网关运行后,浏览器访问以下地址即可打开基于 OpenAPI 规范的交互式 API 文档(Swagger UI),可以在页面上直接查看所有已注册端点、请求/响应结构并在线发送请求:

http://127.0.0.1:7000/docs

该界面基于网关启动时加载的配置动态生成,因此你声明的每一个端点(chat / completions / embeddings)都会出现在文档中,是验证配置是否生效最直观的方式。

第六步:发送测试请求

目录下每个 Provider 都提供了example.py脚本,通过 MLflow 的统一部署客户端(mlflow.deployments.get_deploy_client)与网关交互。运行方式:

python examples/gateway/<provider>/example.py

以 OpenAI 示例 为例,其核心调用逻辑如下:

from mlflow.deployments import get_deploy_client def main(): # 1. 连接到本地已启动的网关 client = get_deploy_client("http://localhost:7000") # 2. 列出所有端点、查询单个端点信息 print(f"OpenAI endpoints: {client.list_endpoints()}\n") print(f"OpenAI endpoint info: {client.get_endpoint(endpoint='completions')}\n") # 3. 向 completions 端点发送文本补全请求 response_completions = client.predict( endpoint="completions", inputs={ "prompt": "How many patties could be stacked on a cheeseburger before issues arise?", "max_tokens": 200, "temperature": 0.25, }, ) print(f"OpenAI completions response: {response_completions}") # 4. 向 chat 端点发送多轮对话请求 response_chat = client.predict( endpoint="chat", inputs={ "messages": [ { "role": "user", "content": "Please recite the preamble to the US Constitution as if it were " "written today by a rapper from Reykjavík", } ] }, ) print(f"OpenAI completions response: {response_chat}") # 5. 向 embeddings 端点发送向量化请求 response_embeddings = client.predict( endpoint="embeddings", inputs={ "input": "When you say 'enriched', what exactly are you enriching the cereal with?" }, ) print(f"OpenAI response for embeddings: {response_embeddings}") if __name__ == "__main__": main()

这段脚本演示了客户端 API 的四个核心方法:

  • get_deploy_client(url):创建指向网关的部署客户端,URL 必须与网关监听地址一致;
  • list_endpoints():列出网关中已注册的全部端点,用于确认配置已正确加载;
  • get_endpoint(endpoint=...):按名称查询单个端点的元信息;
  • predict(endpoint=..., inputs=...):向指定端点发送推理请求,inputs的字段随端点类型而异——completions 用prompt/max_tokens/temperature等生成参数,chat 用messages对话数组,embeddings 用input文本。

其他 Provider 的example.py结构与 OpenAI 示例一致,仅替换端点名、模型相关参数与提示语内容,可作为验证任意 Provider 配置是否生效的快速手段。

从源码理解 Gateway 的实现位置

如果希望深入了解网关的底层实现,仓库中的相关代码位于 mlflow/gateway(含 48 个 Python 模块),网关的部署客户端接口则定义在 mlflow/deployments。配置文件中的llm/v1/*端点类型、各 Provider 的初始化逻辑与limit限流策略均可在这两个目录的源码中找到对应实现,测试用例可参考 tests/gateway。示例目录本身则是理解配置文件结构与调用方式最快的入口。

小结

通过以上六步,你可以在本地快速完成一套多 Provider 的 LLM 网关搭建:pip install 'mlflow[genai]'安装 → 编写endpoints配置(声明端点类型、模型、密钥与可选限流)→ 导出环境变量注入密钥 →mlflow gateway start启动 → 在http://127.0.0.1:7000/docs查看交互式 API 文档 → 用get_deploy_client发送测试请求。统一的路由抽象让上层应用无需关心各 Provider 的差异,而examples/gateway下的每份配置文件与示例脚本,正是快速接入任意一家模型服务的最佳起点。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询