摘要:LiteLLM可以在统一的界面中调用 100 多个大语言模型(LLM),并且可以跟踪每个大模型的Tocken使用情况,为每个虚拟密钥/用户设置预算等。
今天介绍一款开源的OpenAI代理服务器(LLM 网关)-- LiteLLM
https://github.com/BerriAI/litellm (github 15K Star)
LiteLLM可以在统一的界面中调用 100 多个大语言模型(LLM),并且可以跟踪每个大模型的Tocken使用情况,为每个虚拟密钥/用户设置预算等。
这样仅需使用统一的Python SDK(gateway)即可调用任意大模型了,不必再去单独适配每个模型并不相同的的API接口,适合进行由代码能力的Developer们进行二次开发!
好,接下来跟随我在本地环境搭建起来,看看这个OpenAI的代理网关究竟如何~
docker环境ollama本地模型LiteLLM还是以Docker方式部署
首先下载如下镜像:
docker-compose配置:
$ cat docker-compose.ymlservices:litellm:image: ghcr.io/berriai/litellm:main-stablevolumes:- ./config.yaml:/app/config.yamlcommand:- "--config=/app/config.yaml"ports:- "4000:4000" environment:LITELLM_MASTER_KEY: "sk-1234" #LITELLM_SALT_KEY: "sk-XXXXXXXX"DATABASE_URL: "postgresql://llmproxy:dbpassword9090@litellmdb:5432/litellm"STORE_MODEL_IN_DB: "True"env_file:- .env # Load local .env filelitellmdb:image: postgres:12.22restart: alwaysenvironment:POSTGRES_DB: litellmPOSTGRES_USER: llmproxyPOSTGRES_PASSWORD: dbpassword9090healthcheck:test: ["CMD-SHELL", "pg_isready -d litellm -U llmproxy"]interval: 1stimeout: 5sretries: 10配置文件:config.yaml
$ cat config.yamlmodel_list:- model_name: gemma2:9blitellm_params:model: ollama/gemma2:9bapi_base: http://Host.docker.internal:11434- model_name: qwen:14blitellm_params:model: ollama/qwen:14bapi_base: http://Host.docker.internal:11434- model_name: codellama:13blitellm_params:model: ollama/codellama:13bapi_base: http://Host.docker.internal:11434这里写了我本地现有ollama的模型(选了三个),注意 Host.docker.internal 的用法
启动服务:
docker compose up -d浏览器访问:
目前已经可以看到API接口情况,神似Swagger。
查看容器里面的日志及访问情况:
可以登陆管理员控制台UI:
输入之前指定的 LITELLM_MASTER_KEY:
LiteLLM查询当前模型情况:
当前模型已经可以列出:
LiteLLM 可支持的模型列表(100+)
LiteLLM支持超多平台和机构的大模型,下面是支持的平台的简单介绍:
Bedrock:Amazon Bedrock-生成式人工智能应用新服务。Azure:微软的云服务。OpenAI:著名的开源人工智能研究机构。VertexAI:Google的云端机器学习平台。Cohere、Anthropic:专注于人工智能和自然语言处理的公司。Sagemaker:亚马逊AWS提供的机器学习开发工具包。HuggingFace:提供高质量预训练模型的库,主要用于NLP任务。Replicate、Groq:关于数据复制或高级搜索技术的相关平台。既然本地环境都搭建好了,好歹使用LiteLLM工具聊上几句吧,可惜现在大语言都聪明了,不好骗了~
注意:
LiteLLM 是关于OpenAI的代理服务器,主要是方便开发者使用Python语言进行api调用,并不是专门为了在UI页面进行聊天的工具,从UI方便及美观程度比起LobeChat要相差很远。
我们可以看看我本地使用LobeChat针对同样问题的聊天,比LiteLLM可是强多了哈,至少好看,还有session及上下文跟随。
接下来看看使用Python API调用方式
pip install litellm基本调用情况
from litellm import completionimport os## set ENV variablesos.environ["OPENAI_API_KEY"] = "your-openai-key"os.environ["ANTHROPIC_API_KEY"] = "your-cohere-key"messages = [{ "content": "哈喽啊,吃了没?","role": "user"}]# openai callresponse = completion(model="openai/gpt-4o", messages=messages)# ollama callresponse = completion(model="ollama/gemma2:9b", messages=messages)print(response)LiteLLM 还支持流式(streaming)响应,使用stream=True,如:
from litellm import completionresponse = completion(model="openai/gpt-4o", messages=messages, stream=True)for part in response:print(part.choices[0].delta.content or "")# claude 2response = completion('ollama/gemma2:9b', messages, stream=True)for part in response:print(part)LiteLLM更多的文档可以参考:
感觉怎么样?LiteLLM是一款OpenAI接口模式的统一代理网关,基于Python,适合进行二次开发与包装,简化多模型适配的繁琐和重复工作,有类似需求的同学值得一试!
正巧今天是小寒,借之前大模型的诗意大发,吟诗一首,祝各位小寒节日快乐!
小 寒
by:通义千问:14b
小寒时节透冰心,
银装素裹月沉吟。
炉火温酒驱风冷,
诗酒年华笑对冬。
来源:非愉日志