Guest User

Streaming response wrapping for custom transport layers (error 2)

a guest
Feb 7th, 2024
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 21.50 KB | Source Code | 0 0
  1. ---------------------------------------------------------------------------
  2. KeyError                                  Traceback (most recent call last)
  3. File /lib/python3.11/site-packages/urllib3/_collections.py:110, in RecentlyUsedContainer.__setitem__(self, key, value)
  4.     106 try:
  5.     107     # If the key exists, we'll overwrite it, which won't change the
  6.     108     # size of the pool. Because accessing a key should move it to
  7.     109     # the end of the eviction line, we pop it out first.
  8. --> 110     evicted_item = key, self._container.pop(key)
  9.     111     self._container[key] = value
  10.  
  11. KeyError: PoolKey(key_scheme='https', key_host='xxx.openai.azure.com', key_port=443, key_timeout=None, key_retries=None, key_block=None, key_source_address=None, key_key_file=None, key_key_password=None, key_cert_file=None, key_cert_reqs=None, key_ca_certs=None, key_ca_cert_data=None, key_ssl_version=None, key_ssl_minimum_version=None, key_ssl_maximum_version=None, key_ca_cert_dir=None, key_ssl_context=None, key_maxsize=None, key_headers=None, key__proxy=None, key__proxy_headers=None, key__proxy_config=None, key_socket_options=None, key__socks_options=None, key_assert_hostname=None, key_assert_fingerprint=None, key_server_hostname=None, key_blocksize=16384)
  12.  
  13. During handling of the above exception, another exception occurred:
  14.  
  15. TypeError                                 Traceback (most recent call last)
  16. File /lib/python3.11/site-packages/openai/_base_client.py:882, in SyncAPIClient._request(self, cast_to, options, remaining_retries, stream, stream_cls)
  17.     881 try:
  18. --> 882     response = self._client.send(
  19.     883         request,
  20.     884         auth=self.custom_auth,
  21.     885         stream=stream or self._should_stream_response_body(request=request),
  22.     886     )
  23.     887     log.debug(
  24.     888         'HTTP Request: %s %s "%i %s"', request.method, request.url, response.status_code, response.reason_phrase
  25.     889     )
  26.  
  27. File /lib/python3.11/site-packages/httpx/_client.py:915, in Client.send(self, request, stream, auth, follow_redirects)
  28.     913 auth = self._build_request_auth(request, auth)
  29. --> 915 response = self._send_handling_auth(
  30.     916     request,
  31.     917     auth=auth,
  32.     918     follow_redirects=follow_redirects,
  33.     919     history=[],
  34.     920 )
  35.     921 try:
  36.  
  37. File /lib/python3.11/site-packages/httpx/_client.py:943, in Client._send_handling_auth(self, request, auth, follow_redirects, history)
  38.     942 while True:
  39. --> 943     response = self._send_handling_redirects(
  40.     944         request,
  41.     945         follow_redirects=follow_redirects,
  42.     946         history=history,
  43.     947     )
  44.     948     try:
  45.  
  46. File /lib/python3.11/site-packages/httpx/_client.py:980, in Client._send_handling_redirects(self, request, follow_redirects, history)
  47.     978     hook(request)
  48. --> 980 response = self._send_single_request(request)
  49.     981 try:
  50.  
  51. File /lib/python3.11/site-packages/httpx/_client.py:1016, in Client._send_single_request(self, request)
  52.    1015 with request_context(request=request):
  53. -> 1016     response = transport.handle_request(request)
  54.    1018 assert isinstance(response.stream, SyncByteStream)
  55.  
  56. Cell In[2], line 80, in URLLib3Transport.handle_request(self, request)
  57.      79 payload = json.loads(request.content.decode("utf-8").replace("'",'"'))
  58. ---> 80 urllib3_request = self._http.request(
  59.      81     method=request.method,
  60.      82     url=str(request.url),
  61.      83     headers=request.headers,
  62.      84     body=payload,
  63.      85     fields=None,
  64.      86     stream=True,
  65.      87 )
  66.      88 headers = [(b"content-type", b"application/json")]
  67.  
  68. File /lib/python3.11/site-packages/urllib3/_request_methods.py:144, in RequestMethods.request(self, method, url, body, fields, headers, json, **urlopen_kw)
  69.     143 else:
  70. --> 144     return self.request_encode_body(
  71.     145         method, url, fields=fields, headers=headers, **urlopen_kw
  72.     146     )
  73.  
  74. File /lib/python3.11/site-packages/urllib3/_request_methods.py:279, in RequestMethods.request_encode_body(self, method, url, fields, headers, encode_multipart, multipart_boundary, **urlopen_kw)
  75.     277 extra_kw.update(urlopen_kw)
  76. --> 279 return self.urlopen(method, url, **extra_kw)
  77.  
  78. File /lib/python3.11/site-packages/urllib3/poolmanager.py:433, in PoolManager.urlopen(self, method, url, redirect, **kw)
  79.     424     warnings.warn(
  80.     425         "URLs without a scheme (ie 'https://') are deprecated and will raise an error "
  81.     426         "in a future version of urllib3. To avoid this DeprecationWarning ensure all URLs "
  82.    (...)
  83.     430         stacklevel=2,
  84.     431     )
  85. --> 433 conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme)
  86.     435 kw["assert_same_host"] = False
  87.  
  88. File /lib/python3.11/site-packages/urllib3/poolmanager.py:304, in PoolManager.connection_from_host(self, host, port, scheme, pool_kwargs)
  89.     302 request_context["host"] = host
  90. --> 304 return self.connection_from_context(request_context)
  91.  
  92. File /lib/python3.11/site-packages/urllib3/poolmanager.py:329, in PoolManager.connection_from_context(self, request_context)
  93.     327 pool_key = pool_key_constructor(request_context)
  94. --> 329 return self.connection_from_pool_key(pool_key, request_context=request_context)
  95.  
  96. File /lib/python3.11/site-packages/urllib3/poolmanager.py:353, in PoolManager.connection_from_pool_key(self, pool_key, request_context)
  97.     352     pool = self._new_pool(scheme, host, port, request_context=request_context)
  98. --> 353     self.pools[pool_key] = pool
  99.     355 return pool
  100.  
  101. File /lib/python3.11/site-packages/urllib3/_collections.py:116, in RecentlyUsedContainer.__setitem__(self, key, value)
  102.     115 self._container[key] = value
  103. --> 116 if len(self._container) > self._maxsize:
  104.     117     # If we didn't evict an existing value, and we've hit our maximum
  105.     118     # size, then we have to evict the least recently used item from
  106.     119     # the beginning of the container.
  107.     120     evicted_item = self._container.popitem(last=False)
  108.  
  109. TypeError: '>' not supported between instances of 'int' and 'ConnectionPool'
  110.  
  111. During handling of the above exception, another exception occurred:
  112.  
  113. TypeError                                 Traceback (most recent call last)
  114. File /lib/python3.11/site-packages/openai/_base_client.py:882, in SyncAPIClient._request(self, cast_to, options, remaining_retries, stream, stream_cls)
  115.     881 try:
  116. --> 882     response = self._client.send(
  117.     883         request,
  118.     884         auth=self.custom_auth,
  119.     885         stream=stream or self._should_stream_response_body(request=request),
  120.     886     )
  121.     887     log.debug(
  122.     888         'HTTP Request: %s %s "%i %s"', request.method, request.url, response.status_code, response.reason_phrase
  123.     889     )
  124.  
  125. File /lib/python3.11/site-packages/httpx/_client.py:915, in Client.send(self, request, stream, auth, follow_redirects)
  126.     913 auth = self._build_request_auth(request, auth)
  127. --> 915 response = self._send_handling_auth(
  128.     916     request,
  129.     917     auth=auth,
  130.     918     follow_redirects=follow_redirects,
  131.     919     history=[],
  132.     920 )
  133.     921 try:
  134.  
  135. File /lib/python3.11/site-packages/httpx/_client.py:943, in Client._send_handling_auth(self, request, auth, follow_redirects, history)
  136.     942 while True:
  137. --> 943     response = self._send_handling_redirects(
  138.     944         request,
  139.     945         follow_redirects=follow_redirects,
  140.     946         history=history,
  141.     947     )
  142.     948     try:
  143.  
  144. File /lib/python3.11/site-packages/httpx/_client.py:980, in Client._send_handling_redirects(self, request, follow_redirects, history)
  145.     978     hook(request)
  146. --> 980 response = self._send_single_request(request)
  147.     981 try:
  148.  
  149. File /lib/python3.11/site-packages/httpx/_client.py:1016, in Client._send_single_request(self, request)
  150.    1015 with request_context(request=request):
  151. -> 1016     response = transport.handle_request(request)
  152.    1018 assert isinstance(response.stream, SyncByteStream)
  153.  
  154. Cell In[2], line 80, in URLLib3Transport.handle_request(self, request)
  155.      79 payload = json.loads(request.content.decode("utf-8").replace("'",'"'))
  156. ---> 80 urllib3_request = self._http.request(
  157.      81     method=request.method,
  158.      82     url=str(request.url),
  159.      83     headers=request.headers,
  160.      84     body=payload,
  161.      85     fields=None,
  162.      86     stream=True,
  163.      87 )
  164.      88 headers = [(b"content-type", b"application/json")]
  165.  
  166. File /lib/python3.11/site-packages/urllib3/_request_methods.py:144, in RequestMethods.request(self, method, url, body, fields, headers, json, **urlopen_kw)
  167.     143 else:
  168. --> 144     return self.request_encode_body(
  169.     145         method, url, fields=fields, headers=headers, **urlopen_kw
  170.     146     )
  171.  
  172. File /lib/python3.11/site-packages/urllib3/_request_methods.py:279, in RequestMethods.request_encode_body(self, method, url, fields, headers, encode_multipart, multipart_boundary, **urlopen_kw)
  173.     277 extra_kw.update(urlopen_kw)
  174. --> 279 return self.urlopen(method, url, **extra_kw)
  175.  
  176. File /lib/python3.11/site-packages/urllib3/poolmanager.py:444, in PoolManager.urlopen(self, method, url, redirect, **kw)
  177.     443 else:
  178. --> 444     response = conn.urlopen(method, u.request_uri, **kw)
  179.     446 redirect_location = redirect and response.get_redirect_location()
  180.  
  181. File /lib/python3.11/site-packages/urllib3/connectionpool.py:792, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)
  182.     791 # Make the request on the HTTPConnection object
  183. --> 792 response = self._make_request(
  184.     793     conn,
  185.     794     method,
  186.     795     url,
  187.     796     timeout=timeout_obj,
  188.     797     body=body,
  189.     798     headers=headers,
  190.     799     chunked=chunked,
  191.     800     retries=retries,
  192.     801     response_conn=response_conn,
  193.     802     preload_content=preload_content,
  194.     803     decode_content=decode_content,
  195.     804     **response_kw,
  196.     805 )
  197.     807 # Everything went great!
  198.  
  199. TypeError: HTTPConnectionPool._make_request() got an unexpected keyword argument 'stream'
  200.  
  201. During handling of the above exception, another exception occurred:
  202.  
  203. TypeError                                 Traceback (most recent call last)
  204. File /lib/python3.11/site-packages/openai/_base_client.py:882, in SyncAPIClient._request(self, cast_to, options, remaining_retries, stream, stream_cls)
  205.     881 try:
  206. --> 882     response = self._client.send(
  207.     883         request,
  208.     884         auth=self.custom_auth,
  209.     885         stream=stream or self._should_stream_response_body(request=request),
  210.     886     )
  211.     887     log.debug(
  212.     888         'HTTP Request: %s %s "%i %s"', request.method, request.url, response.status_code, response.reason_phrase
  213.     889     )
  214.  
  215. File /lib/python3.11/site-packages/httpx/_client.py:915, in Client.send(self, request, stream, auth, follow_redirects)
  216.     913 auth = self._build_request_auth(request, auth)
  217. --> 915 response = self._send_handling_auth(
  218.     916     request,
  219.     917     auth=auth,
  220.     918     follow_redirects=follow_redirects,
  221.     919     history=[],
  222.     920 )
  223.     921 try:
  224.  
  225. File /lib/python3.11/site-packages/httpx/_client.py:943, in Client._send_handling_auth(self, request, auth, follow_redirects, history)
  226.     942 while True:
  227. --> 943     response = self._send_handling_redirects(
  228.     944         request,
  229.     945         follow_redirects=follow_redirects,
  230.     946         history=history,
  231.     947     )
  232.     948     try:
  233.  
  234. File /lib/python3.11/site-packages/httpx/_client.py:980, in Client._send_handling_redirects(self, request, follow_redirects, history)
  235.     978     hook(request)
  236. --> 980 response = self._send_single_request(request)
  237.     981 try:
  238.  
  239. File /lib/python3.11/site-packages/httpx/_client.py:1016, in Client._send_single_request(self, request)
  240.    1015 with request_context(request=request):
  241. -> 1016     response = transport.handle_request(request)
  242.    1018 assert isinstance(response.stream, SyncByteStream)
  243.  
  244. Cell In[2], line 80, in URLLib3Transport.handle_request(self, request)
  245.      79 payload = json.loads(request.content.decode("utf-8").replace("'",'"'))
  246. ---> 80 urllib3_request = self._http.request(
  247.      81     method=request.method,
  248.      82     url=str(request.url),
  249.      83     headers=request.headers,
  250.      84     body=payload,
  251.      85     fields=None,
  252.      86     stream=True,
  253.      87 )
  254.      88 headers = [(b"content-type", b"application/json")]
  255.  
  256. File /lib/python3.11/site-packages/urllib3/_request_methods.py:144, in RequestMethods.request(self, method, url, body, fields, headers, json, **urlopen_kw)
  257.     143 else:
  258. --> 144     return self.request_encode_body(
  259.     145         method, url, fields=fields, headers=headers, **urlopen_kw
  260.     146     )
  261.  
  262. File /lib/python3.11/site-packages/urllib3/_request_methods.py:279, in RequestMethods.request_encode_body(self, method, url, fields, headers, encode_multipart, multipart_boundary, **urlopen_kw)
  263.     277 extra_kw.update(urlopen_kw)
  264. --> 279 return self.urlopen(method, url, **extra_kw)
  265.  
  266. File /lib/python3.11/site-packages/urllib3/poolmanager.py:444, in PoolManager.urlopen(self, method, url, redirect, **kw)
  267.     443 else:
  268. --> 444     response = conn.urlopen(method, u.request_uri, **kw)
  269.     446 redirect_location = redirect and response.get_redirect_location()
  270.  
  271. File /lib/python3.11/site-packages/urllib3/connectionpool.py:792, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)
  272.     791 # Make the request on the HTTPConnection object
  273. --> 792 response = self._make_request(
  274.     793     conn,
  275.     794     method,
  276.     795     url,
  277.     796     timeout=timeout_obj,
  278.     797     body=body,
  279.     798     headers=headers,
  280.     799     chunked=chunked,
  281.     800     retries=retries,
  282.     801     response_conn=response_conn,
  283.     802     preload_content=preload_content,
  284.     803     decode_content=decode_content,
  285.     804     **response_kw,
  286.     805 )
  287.     807 # Everything went great!
  288.  
  289. TypeError: HTTPConnectionPool._make_request() got an unexpected keyword argument 'stream'
  290.  
  291. The above exception was the direct cause of the following exception:
  292.  
  293. APIConnectionError                        Traceback (most recent call last)
  294. Cell In[4], line 1
  295. ----> 1 response = openai_client.chat.completions.with_raw_response.create(
  296.       2     messages=[{
  297.       3         "role": "user",
  298.       4         "content": "sing me a song",
  299.       5     }],
  300.       6     model="gpt-35-turbo",
  301.       7     max_tokens=30,
  302.       8     temperature=0.7,
  303.       9 )
  304.  
  305. File /lib/python3.11/site-packages/openai/_response.py:244, in to_raw_response_wrapper.<locals>.wrapped(*args, **kwargs)
  306.     240 extra_headers[RAW_RESPONSE_HEADER] = "true"
  307.     242 kwargs["extra_headers"] = extra_headers
  308. --> 244 return cast(APIResponse[R], func(*args, **kwargs))
  309.  
  310. File /lib/python3.11/site-packages/openai/_utils/_utils.py:301, in required_args.<locals>.inner.<locals>.wrapper(*args, **kwargs)
  311.     299             msg = f"Missing required argument: {quote(missing[0])}"
  312.     300     raise TypeError(msg)
  313. --> 301 return func(*args, **kwargs)
  314.  
  315. File /lib/python3.11/site-packages/openai/resources/chat/completions.py:598, in Completions.create(self, messages, model, frequency_penalty, function_call, functions, logit_bias, max_tokens, n, presence_penalty, response_format, seed, stop, stream, temperature, tool_choice, tools, top_p, user, extra_headers, extra_query, extra_body, timeout)
  316.     551 @required_args(["messages", "model"], ["messages", "model", "stream"])
  317.     552 def create(
  318.     553     self,
  319.    (...)
  320.     596     timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
  321.     597 ) -> ChatCompletion | Stream[ChatCompletionChunk]:
  322. --> 598     return self._post(
  323.     599         "/chat/completions",
  324.     600         body=maybe_transform(
  325.     601             {
  326.     602                 "messages": messages,
  327.     603                 "model": model,
  328.     604                 "frequency_penalty": frequency_penalty,
  329.     605                 "function_call": function_call,
  330.     606                 "functions": functions,
  331.     607                 "logit_bias": logit_bias,
  332.     608                 "max_tokens": max_tokens,
  333.     609                 "n": n,
  334.     610                 "presence_penalty": presence_penalty,
  335.     611                 "response_format": response_format,
  336.     612                 "seed": seed,
  337.     613                 "stop": stop,
  338.     614                 "stream": stream,
  339.     615                 "temperature": temperature,
  340.     616                 "tool_choice": tool_choice,
  341.     617                 "tools": tools,
  342.     618                 "top_p": top_p,
  343.     619                 "user": user,
  344.     620             },
  345.     621             completion_create_params.CompletionCreateParams,
  346.     622         ),
  347.     623         options=make_request_options(
  348.     624             extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
  349.     625         ),
  350.     626         cast_to=ChatCompletion,
  351.     627         stream=stream or False,
  352.     628         stream_cls=Stream[ChatCompletionChunk],
  353.     629     )
  354.  
  355. File /lib/python3.11/site-packages/openai/_base_client.py:1096, in SyncAPIClient.post(self, path, cast_to, body, options, files, stream, stream_cls)
  356.    1082 def post(
  357.    1083     self,
  358.    1084     path: str,
  359.    (...)
  360.    1091     stream_cls: type[_StreamT] | None = None,
  361.    1092 ) -> ResponseT | _StreamT:
  362.    1093     opts = FinalRequestOptions.construct(
  363.    1094         method="post", url=path, json_data=body, files=to_httpx_files(files), **options
  364.    1095     )
  365. -> 1096     return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
  366.  
  367. File /lib/python3.11/site-packages/openai/_base_client.py:856, in SyncAPIClient.request(self, cast_to, options, remaining_retries, stream, stream_cls)
  368.     847 def request(
  369.     848     self,
  370.     849     cast_to: Type[ResponseT],
  371.    (...)
  372.     854     stream_cls: type[_StreamT] | None = None,
  373.     855 ) -> ResponseT | _StreamT:
  374. --> 856     return self._request(
  375.     857         cast_to=cast_to,
  376.     858         options=options,
  377.     859         stream=stream,
  378.     860         stream_cls=stream_cls,
  379.     861         remaining_retries=remaining_retries,
  380.     862     )
  381.  
  382. File /lib/python3.11/site-packages/openai/_base_client.py:929, in SyncAPIClient._request(self, cast_to, options, remaining_retries, stream, stream_cls)
  383.     926         response.close()
  384.     928     if retries > 0:
  385. --> 929         return self._retry_request(
  386.     930             options,
  387.     931             cast_to,
  388.     932             retries,
  389.     933             stream=stream,
  390.     934             stream_cls=stream_cls,
  391.     935             response_headers=response.headers if response is not None else None,
  392.     936         )
  393.     938     raise APIConnectionError(request=request) from err
  394.     940 return self._process_response(
  395.     941     cast_to=cast_to,
  396.     942     options=options,
  397.    (...)
  398.     945     stream_cls=stream_cls,
  399.     946 )
  400.  
  401. File /lib/python3.11/site-packages/openai/_base_client.py:966, in SyncAPIClient._retry_request(self, options, cast_to, remaining_retries, response_headers, stream, stream_cls)
  402.     962 # In a synchronous context we are blocking the entire thread. Up to the library user to run the client in a
  403.     963 # different thread if necessary.
  404.     964 time.sleep(timeout)
  405. --> 966 return self._request(
  406.     967     options=options,
  407.     968     cast_to=cast_to,
  408.     969     remaining_retries=remaining,
  409.     970     stream=stream,
  410.     971     stream_cls=stream_cls,
  411.     972 )
  412.  
  413. File /lib/python3.11/site-packages/openai/_base_client.py:929, in SyncAPIClient._request(self, cast_to, options, remaining_retries, stream, stream_cls)
  414.     926         response.close()
  415.     928     if retries > 0:
  416. --> 929         return self._retry_request(
  417.     930             options,
  418.     931             cast_to,
  419.     932             retries,
  420.     933             stream=stream,
  421.     934             stream_cls=stream_cls,
  422.     935             response_headers=response.headers if response is not None else None,
  423.     936         )
  424.     938     raise APIConnectionError(request=request) from err
  425.     940 return self._process_response(
  426.     941     cast_to=cast_to,
  427.     942     options=options,
  428.    (...)
  429.     945     stream_cls=stream_cls,
  430.     946 )
  431.  
  432. File /lib/python3.11/site-packages/openai/_base_client.py:966, in SyncAPIClient._retry_request(self, options, cast_to, remaining_retries, response_headers, stream, stream_cls)
  433.     962 # In a synchronous context we are blocking the entire thread. Up to the library user to run the client in a
  434.     963 # different thread if necessary.
  435.     964 time.sleep(timeout)
  436. --> 966 return self._request(
  437.     967     options=options,
  438.     968     cast_to=cast_to,
  439.     969     remaining_retries=remaining,
  440.     970     stream=stream,
  441.     971     stream_cls=stream_cls,
  442.     972 )
  443.  
  444. File /lib/python3.11/site-packages/openai/_base_client.py:938, in SyncAPIClient._request(self, cast_to, options, remaining_retries, stream, stream_cls)
  445.     928     if retries > 0:
  446.     929         return self._retry_request(
  447.     930             options,
  448.     931             cast_to,
  449.    (...)
  450.     935             response_headers=response.headers if response is not None else None,
  451.     936         )
  452. --> 938     raise APIConnectionError(request=request) from err
  453.     940 return self._process_response(
  454.     941     cast_to=cast_to,
  455.     942     options=options,
  456.    (...)
  457.     945     stream_cls=stream_cls,
  458.     946 )
  459.  
  460. APIConnectionError: Connection error.
Advertisement
Add Comment
Please, Sign In to add comment