让openai支持socks5代理

openai入门使用

这段时间有空来倒腾下大模型,由于访问openai需要外网,而我本地采用的socket代理形式,一度让我差点放弃,接下来说说怎么解决

  1. 安装依赖 pysocks,aiosocksy,openai==0.27.8
  2. 定义使用socks
import socket
import socks
socks.set_default_proxy(socks.SOCKS5, "127.0.0.7", 7891)
socket.socket = socks.socksocket
  1. 更改openai的源码,将在openai/api_requestor.py 770行aiohttp_session方法
  async with aiohttp.ClientSession() as session:  
            yield session  

换成

connector = ProxyConnector()
async with aiohttp.ClientSession(connector=connector, request_class=ProxyClientRequest) as session:
    yield session

这样再使用openai就不会有“python Unknown scheme for proxy URL URL(socks:127.0.0.7:7891) ”之类的错误了,目前只在这个版本的openai才能使用哦

整个例子大概如下

import socket
import socks
import openai

from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain_core.prompts import PromptTemplate

socks.set_default_proxy(socks.SOCKS5, "127.0.0.7", 7891)
socket.socket = socks.socksocket

openai.api_key = "xxx"


if __name__ == '__main__':
    # 初始化 llm 包装器
    llm = OpenAI(temperature=0)
    chat_model = ChatOpenAI()

    # 设置提示模板
    prompt = PromptTemplate(
        input_variables=["name"],
        template="如何学习python?{name}"
    )

    # 调用
    print(llm(prompt.format(name="小明")))

可有如下显示

1. 首先,小明可以从Python的基础语法开始学习,比如变量、数据类型、控制结构、函数等。

2. 其次,小明可以学习Python的高级特性,比如面向对象编程、模块、异常处理、迭代器等。

3. 再次,小明可以学习Python的标准库,比如os、sys、re、datetime等。

4. 最后,小明可以学习Python的第三方

Process finished with exit code 0

参考

  1. https://juejin.cn/post/7274961228441763876
  2. https://blog.csdn.net/wtl1992/article/details/133180785
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值