OpenAI API模拟利器Litellm

649 阅读3分钟

正值AI飞速发展的阶段,涌现出了多种多样的LLM模型,现在很多开源工具接入的都是OpenAI API,要求别人把所有模型都兼容一遍也不太可能,想用开源工具和指定的模型该怎么办呢?那么就要了解一下Litellm了,Litellm和前面我们了解的OpenRouter有类似的功能,都实现了OpenAI的代理服务功能。

优势

Litellm是Python的一个终端命令行,安装简便,可本地部署管理

简介

LiteLLM 是一个强大的LLM(大型语言模型)API调用工具,旨在简化开发者与各种LLM提供商API的交互过程。简单来说就是使用 OpenAI 格式调用所有LLM API,LiteLLM 是一个Python依赖包,安装简单,一键启动代理。

官网

文档地址:docs.litellm.ai

Github地址:github.com/BerriAI/lit…

图片

支持LLM

LiteLLM 支持了 anthropic、openai、azure、ollama、google AI Studio - gemini、Deepseek等主流厂商,以及其他厂商模型。

图片

图片

安装

// 安装litellm,只使用代理模式可以不用安装
pip install litellm

// 安装litellm代理
pip install 'litellm[proxy]'

如果安装过程比较缓慢,可以使用国内镜像

pip install litellm -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

pip install 'litellm[proxy]' -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

使用LiteLLM

使用限制

使用LiteLLM调用模型时,某些模型调用需要科学上网环境

在代码中使用

以 Gemini 为例,Gemini 对应LiteLLM文档:docs.litellm.ai/docs/provid…

from litellm import completion
import os

## set ENV variables
os.environ["GEMINI_API_KEY"] = "你的Gemini API Key"

messages = [{ "content": "Hello, how are you?","role": "user"}]

# openai call
response = completion(model="gemini/gemini-2.0-flash-exp", messages=messages)

print(response)

OpenAI 格式响应

图片

异步

from litellm import acompletion
import os
import asyncio

## set ENV variables
os.environ["GEMINI_API_KEY"] = "你的Gemini API Key"

async def test_get_response():
  user_message = "Hello, how are you?"
  messages = [{"content": user_message, "role": "user"}]
  response = await acompletion(model="gemini/gemini-2.0-flash-exp", messages=messages)
  return response
  
response = asyncio.run(test_get_response())
  
print(response)

图片

流式处理

from litellm import completion
import os

## set ENV variables
os.environ["GEMINI_API_KEY"] = "你的Gemini API Key"

messages = [{ "content": "Hello, how are you?","role": "user"}]

# openai call
response = completion(model="gemini/gemini-2.0-flash-exp", messages=messages, stream=True)

for part in response:
  print(part.choices[0].delta.content or "")

图片

使用LiteLLM代理

LiteLLM代理是一个终端命令行工具,提供了一系列参数配置。

优势

直接在代理服务器上配置科学上网环境,无需在本地配置

查看帮助

$ litellm --help

图片

设置端口号

LiteLLM默认端口号为 4000,如需更改可以使用host参数配置

litellm --model gemini/gemini-2.0-flash-exp --port 5000

图片

自定义配置

自定义配置可以同时对多模型进行配置,首先创建一个 config.yaml 文件

model_list:
  - model_name: gemini-2.0-flash-exp
    litellm_params:
      model: gemini/gemini-2.0-flash-exp
      api_key: YOUR_GEMINI_API_KEY
      temperature: 0.2
  - model_name: gemini-1.5-flash
    litellm_params:
      model: gemini/gemini-1.5-flash
      api_key: YOUR_GEMINI_API_KEY

图片

终端设置API Key

启动LiteLLM代理前,设置API Key就无需在调用时传入了

export GEMINI_API_KEY=你的Google Gemini API Key

启动代理服务

export GEMINI_API_KEY=你的Google Gemini API Key

图片

使用代理服务

官方文档:docs.litellm.ai/docs/proxy/…

curl --location 'http://0.0.0.0:4000/chat/completions' \
    --header 'Content-Type: application/json' \
    --data '{
    "model": "gemini/gemini-2.0-flash-exp",
    "messages": [
        {
        "role": "user",
        "content": "what llm are you"
        }
    ],
    "metadata": {
        "generation_name": "ishaan-test-generation",
        "generation_id": "gen-id22",
        "trace_id": "trace-id22",
        "trace_user_id": "user-id2"
    }
}'

图片

在VS Code中使用代理服务

进入Cline配置页面,【API Provider】选择【OpenAI Compatible】,【Base URL】填写代理服务地址“http://127.0.0.1:4000”,【Model ID】填写“gemini/gemini-2.0-flash-exp”,点击【Done】完成配置

图片

图片

配置完成后即可使用代理服务聊天了。

图片

常用模型名称及变量

OpenAI

export OPENAI_API_KEY=

litellm --model openai/gpt-4o

Gemini

export GEMINI_API_KEY=

litellm --model gemini/gemini-1.5-flash

litellm --model gemini/gemini-2.0-flash-exp

Anthropic

export ANTHROPIC_API_KEY=

litellm --model anthropic/claude-3-sonnet-20240229

Azure

export AZURE_API_KEY=

litellm --model azure/gpt-3.5-turbo

Huggingface

export HUGGINGFACE_API_KEY=

litellm --model huggingface/meta-llama/Meta-Llama-3.1-8B-Instruct

OpenRouter

export OPENROUTER_API_KEY=

litellm --model openrouter/google/palm-2-chat-bison

Deepseek

export DEEPSEEK_API_KEY=

litellm --model deepseek/deepseek-chat

Mistral

export MISTRAL_API_KEY=

// 聊天和代码补全 API Key
export CODESTRAL_API_KEY=

litellm --model mistral/mistral-tiny

litellm --model mistral/mistral-large-latest

// 聊天和代码补全模型
litellm --model codestral/codestral-latest

LiteLLM Swagger

LiteLLM提供了一套Swagger API,服务查看地址:http://127.0.0.1:4000,可以基于API调用测试或者二开

图片

查看模型列表信息

图片

常见问题

Please set 'XX_API_Key'

图片

没有设置API Key变量,解决方案,导出变量后重新启动代理服务

$ export GEMINI_API_KEY=
$ litellm --model gemini/gemini-2.0-flash-exp

友情提示

见原文:OpenAI API模拟利器Litellm)

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。