چطور برای ارتباط با ای پی آی OpenAI در پایتون از پروکسی استفاده کنیم؟

mohsen9 ماه قبل
ارسال شده در
mohsen

برای ارتباط با ای پی آی OpenAI در پایتون از طریق پروکسی می توانیم از کلاس httpx.HTTPTransport برای مشخص کردن آدرس پروکسی مورد نظر برای ارسال درخواست های HTTP و از httpx.Client برای استافاده از کلاس ترنسپورت تعریف شده و الزام کلاینت OpenAI به استفاده از آن استفاده کنیم.

      import httpx
from openai import OpenAI
proxy = "socks5://127.0.0.1:4030"
transport = httpx.HTTPTransport(proxy=proxy)
client = OpenAI(
    api_key="test-your-api-key",
    http_client=httpx.Client(transport=transport)
)

response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
    

در این مثال از پروکسی socks5 استفاده شده است در صورتی که با خطای زیر مواجه شدید باید پکیچ httpx[socks] را نصب کنید: 

      ImportError: Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.

    

برای استفاده از قابلیت Async در پایتون هم می توانید به جای استفاده از OpenAI از AsyncOpenAI، httpx.AsyncHTTPTransport و httpx.AsyncClient استفاده کنید:

      import httpx
from openai import AsyncOpenAI
proxy = "socks5://127.0.0.1:4030"
transport = httpx.AsyncHTTPTransport(proxy=proxy)
client = AsyncOpenAI(
    api_key="your-api-key",
    http_client=httpx.AsyncClient(transport=transport)
)
async def main():
    response = await client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": "Hello!"}]
    )
print(response.choices[0].message.content)

if __name__ == "__main__":
    asyncio.run(main())
    

در صورتی که در زمان استفاده با خطای زیر مواجه شدید، می توانید از httpx-socks به جای پکیج httpx[socks] استفاده کنید:

      TypeError: unhashable type: 'bytearray'
    

به این صورت باید از AsyncProxyTransport به جای httpx.AsyncHTTPTransport استفاده کنید:

      transport = AsyncProxyTransport.from_url("socks5://127.0.0.1:4030",rdns=True)
    
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!