Python中使用LiteLLM 添加代理调用
日常使用中通常会遇到一个问题,就是需要调用各种不同的大模型。
平时用OpenAI的格式调用,还得写不少东西。最近发现LiteLLM在Python中调用大模型比较简单,马上体验了一下。
结果遇到网络问题,没有走通GPT和Claude。查阅了官方的github,找到了解决方案,特此分享。
直接上完整的代码
import sys
import httpx
from httpx import Timeout
from litellm import completion, acompletion
try:
import litellm
except ImportError:
print("请安装必要的依赖: pip install litellm -U")
sys.exit(1)
from qycore.config import config
"""
pip install litellm -U
"""
# 异步方法
litellm.aclient_session = httpx.AsyncClient(verify=False, trust_env=True, proxy="http://127.0.0.1:1480",
timeout=Timeout(timeout=30.0))
# 同步方法
litellm.client_session = httpx.Client(verify=False, trust_env=True, proxy="http://127.0.0.1:1480",
timeout=Timeout(timeout=30.0))
def main():
response = completion(
base_url=config.OPENAI_API_URL,
api_key=config.OPENAI_API_KEY,
model="gpt-4o-mini",
messages=[{"content": "你是谁,你的数据截止到多久", "role": "user"}],
)
print(response.choices[0].message.content)
async def main_async():
response = await acompletion(
base_url=config.OPENAI_API_URL,
api_key=config.OPENAI_API_KEY,
model="gpt-4o-mini",
messages=[{"content": "你是谁,你的数据截止到多久", "role": "user"}],
)
print(response.choices[0].message.content)
if __name__ == '__main__':
# asyncio.run(main())
main()
核心点,就是给httpx.AsyncClient配上代理IP。最好用本地的Proxy,ClashVerge或者V2RayN都可以。
可以丝滑使用GPT模型和Claude了。
java使用langchain4j和Python中使用openai官方提供的包,进行调用,可以参考之前写的文章。
另:好几次朋友问我GPT和Openai调用API有什么区别。
ChatGPT相当于网页包月版,可以联网,可以深度思考。能用官方提供的几种模型。它低层会调用openai的API。价格,20u入门包月套餐。
OpenAI的API版,相当于原生的代码API调用。联网功能是没有的。别的功能相差不大。优点也很明显,用多少,扣多少费用。主要是方便开发者使用程序进行调用。
Claude也是类似是计费,用网页版和API版,各有优缺点。