Commit 0311d6b5

Stainless Bot <107565488+stainless-bot@users.noreply.github.com>
2024-04-19 05:28:03
feat(api): add request id property to response classes (#1341)
1 parent 88323c4
Changed files (3)
examples/demo.py
@@ -36,3 +36,18 @@ for chunk in stream:
 
     print(chunk.choices[0].delta.content, end="")
 print()
+
+# Response headers:
+print("----- custom response headers test -----")
+response = client.chat.completions.with_raw_response.create(
+    model="gpt-4",
+    messages=[
+        {
+            "role": "user",
+            "content": "Say this is a test",
+        }
+    ],
+)
+completion = response.parse()
+print(response.request_id)
+print(completion.choices[0].message.content)
src/openai/_legacy_response.py
@@ -71,6 +71,10 @@ class LegacyAPIResponse(Generic[R]):
         self._options = options
         self.http_response = raw
 
+    @property
+    def request_id(self) -> str | None:
+        return self.http_response.headers.get("x-request-id")  # type: ignore[no-any-return]
+
     @overload
     def parse(self, *, to: type[_T]) -> _T:
         ...
src/openai/_response.py
@@ -258,6 +258,10 @@ class BaseAPIResponse(Generic[R]):
 
 
 class APIResponse(BaseAPIResponse[R]):
+    @property
+    def request_id(self) -> str | None:
+        return self.http_response.headers.get("x-request-id")  # type: ignore[no-any-return]
+
     @overload
     def parse(self, *, to: type[_T]) -> _T:
         ...
@@ -362,6 +366,10 @@ class APIResponse(BaseAPIResponse[R]):
 
 
 class AsyncAPIResponse(BaseAPIResponse[R]):
+    @property
+    def request_id(self) -> str | None:
+        return self.http_response.headers.get("x-request-id")  # type: ignore[no-any-return]
+
     @overload
     async def parse(self, *, to: type[_T]) -> _T:
         ...