fix(conversations)!: update Conversations API definitions (was: bump openai from 1.107.0 to 2.5.0) (#3847)

Bumps [openai](https://github.com/openai/openai-python) from 1.107.0 to
2.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/openai/openai-python/releases">openai's
releases</a>.</em></p>
<blockquote>
<h2>v2.5.0</h2>
<h2>2.5.0 (2025-10-17)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.4.0...v2.5.0">v2.4.0...v2.5.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> api update (<a
href="8b280d57d6">8b280d5</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>bump <code>httpx-aiohttp</code> version to 0.1.9 (<a
href="67f2f0afe5">67f2f0a</a>)</li>
</ul>
<h2>v2.4.0</h2>
<h2>2.4.0 (2025-10-16)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.3.0...v2.4.0">v2.3.0...v2.4.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> Add support for gpt-4o-transcribe-diarize on
audio/transcriptions endpoint (<a
href="bdbe9b8f44">bdbe9b8</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>fix dangling comment (<a
href="da14e99606">da14e99</a>)</li>
<li><strong>internal:</strong> detect missing future annotations with
ruff (<a
href="2672b8f072">2672b8f</a>)</li>
</ul>
<h2>v2.3.0</h2>
<h2>2.3.0 (2025-10-10)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.2.0...v2.3.0">v2.2.0...v2.3.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> comparison filter in/not in (<a
href="aa49f626a6">aa49f62</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>package:</strong> bump jiter to &gt;=0.10.0 to support
Python 3.14 (<a
href="https://redirect.github.com/openai/openai-python/issues/2618">#2618</a>)
(<a
href="aa445cab5c">aa445ca</a>)</li>
</ul>
<h2>v2.2.0</h2>
<h2>2.2.0 (2025-10-06)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.1.0...v2.2.0">v2.1.0...v2.2.0</a></p>
<h3>Features</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/openai/openai-python/blob/main/CHANGELOG.md">openai's
changelog</a>.</em></p>
<blockquote>
<h2>2.5.0 (2025-10-17)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.4.0...v2.5.0">v2.4.0...v2.5.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> api update (<a
href="8b280d57d6">8b280d5</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>bump <code>httpx-aiohttp</code> version to 0.1.9 (<a
href="67f2f0afe5">67f2f0a</a>)</li>
</ul>
<h2>2.4.0 (2025-10-16)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.3.0...v2.4.0">v2.3.0...v2.4.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> Add support for gpt-4o-transcribe-diarize on
audio/transcriptions endpoint (<a
href="bdbe9b8f44">bdbe9b8</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>fix dangling comment (<a
href="da14e99606">da14e99</a>)</li>
<li><strong>internal:</strong> detect missing future annotations with
ruff (<a
href="2672b8f072">2672b8f</a>)</li>
</ul>
<h2>2.3.0 (2025-10-10)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.2.0...v2.3.0">v2.2.0...v2.3.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> comparison filter in/not in (<a
href="aa49f626a6">aa49f62</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>package:</strong> bump jiter to &gt;=0.10.0 to support
Python 3.14 (<a
href="https://redirect.github.com/openai/openai-python/issues/2618">#2618</a>)
(<a
href="aa445cab5c">aa445ca</a>)</li>
</ul>
<h2>2.2.0 (2025-10-06)</h2>
<p>Full Changelog: <a
href="https://github.com/openai/openai-python/compare/v2.1.0...v2.2.0">v2.1.0...v2.2.0</a></p>
<h3>Features</h3>
<ul>
<li><strong>api:</strong> dev day 2025 launches (<a
href="38ac0093eb">38ac009</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="513ae76253"><code>513ae76</code></a>
release: 2.5.0 (<a
href="https://redirect.github.com/openai/openai-python/issues/2694">#2694</a>)</li>
<li><a
href="ebf32212f7"><code>ebf3221</code></a>
release: 2.4.0</li>
<li><a
href="e043d7b164"><code>e043d7b</code></a>
chore: fix dangling comment</li>
<li><a
href="25cbb74f83"><code>25cbb74</code></a>
feat(api): Add support for gpt-4o-transcribe-diarize on
audio/transcriptions ...</li>
<li><a
href="8cdfd0650e"><code>8cdfd06</code></a>
codegen metadata</li>
<li><a
href="d5c64434b7"><code>d5c6443</code></a>
codegen metadata</li>
<li><a
href="b20a9e7b81"><code>b20a9e7</code></a>
chore(internal): detect missing future annotations with ruff</li>
<li><a
href="e5f93f5dae"><code>e5f93f5</code></a>
release: 2.3.0</li>
<li><a
href="044878859c"><code>0448788</code></a>
feat(api): comparison filter in/not in</li>
<li><a
href="85a91ade61"><code>85a91ad</code></a>
chore(package): bump jiter to &gt;=0.10.0 to support Python 3.14 (<a
href="https://redirect.github.com/openai/openai-python/issues/2618">#2618</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/openai/openai-python/compare/v1.107.0...v2.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=openai&package-manager=uv&previous-version=1.107.0&new-version=2.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ashwin Bharambe <ashwin.bharambe@gmail.com>
This commit is contained in:
dependabot[bot] 2025-10-22 12:32:48 -07:00 committed by GitHub
parent bb1ebb3c6b
commit 8885cea8d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 169 additions and 514 deletions

View file

@ -350,146 +350,46 @@ paths:
in: query in: query
description: >- description: >-
An item ID to list items after, used in pagination. An item ID to list items after, used in pagination.
required: true required: false
schema: schema:
oneOf: type: string
- type: string
- type: object
title: NotGiven
description: >-
A sentinel singleton class used to distinguish omitted keyword arguments
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
- name: include - name: include
in: query in: query
description: >- description: >-
Specify additional output data to include in the response. Specify additional output data to include in the response.
required: true required: false
schema: schema:
oneOf: type: array
- type: array
items: items:
type: string type: string
enum: enum:
- web_search_call.action.sources
- code_interpreter_call.outputs - code_interpreter_call.outputs
- computer_call_output.output.image_url - computer_call_output.output.image_url
- file_search_call.results - file_search_call.results
- message.input_image.image_url - message.input_image.image_url
- message.output_text.logprobs - message.output_text.logprobs
- reasoning.encrypted_content - reasoning.encrypted_content
- type: object title: ConversationItemInclude
title: NotGiven
description: >- description: >-
A sentinel singleton class used to distinguish omitted keyword arguments Specify additional output data to include in the model response.
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
- name: limit - name: limit
in: query in: query
description: >- description: >-
A limit on the number of objects to be returned (1-100, default 20). A limit on the number of objects to be returned (1-100, default 20).
required: true required: false
schema: schema:
oneOf: type: integer
- type: integer
- type: object
title: NotGiven
description: >-
A sentinel singleton class used to distinguish omitted keyword arguments
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
- name: order - name: order
in: query in: query
description: >- description: >-
The order to return items in (asc or desc, default desc). The order to return items in (asc or desc, default desc).
required: true required: false
schema: schema:
oneOf: type: string
- type: string
enum: enum:
- asc - asc
- desc - desc
- type: object
title: NotGiven
description: >-
A sentinel singleton class used to distinguish omitted keyword arguments
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
deprecated: false deprecated: false
post: post:
responses: responses:
@ -6482,6 +6382,7 @@ components:
enum: enum:
- llm - llm
- embedding - embedding
- rerank
title: ModelType title: ModelType
description: >- description: >-
Enumeration of supported model types in Llama Stack. Enumeration of supported model types in Llama Stack.
@ -13585,13 +13486,16 @@ tags:
embeddings. embeddings.
This API provides the raw interface to the underlying models. Two kinds of models This API provides the raw interface to the underlying models. Three kinds of
are supported: models are supported:
- LLM models: these models generate "raw" and "chat" (conversational) completions. - LLM models: these models generate "raw" and "chat" (conversational) completions.
- Embedding models: these models generate embeddings to be used for semantic - Embedding models: these models generate embeddings to be used for semantic
search. search.
- Rerank models: these models reorder the documents based on their relevance
to a query.
x-displayName: Inference x-displayName: Inference
- name: Inspect - name: Inspect
description: >- description: >-

View file

@ -483,87 +483,54 @@
"name": "after", "name": "after",
"in": "query", "in": "query",
"description": "An item ID to list items after, used in pagination.", "description": "An item ID to list items after, used in pagination.",
"required": true, "required": false,
"schema": { "schema": {
"oneOf": [
{
"type": "string" "type": "string"
},
{
"type": "object",
"title": "NotGiven",
"description": "A sentinel singleton class used to distinguish omitted keyword arguments from those passed in with the value None (which may have different behavior).\nFor example:\n\n```py\ndef get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response: ...\n\n\nget(timeout=1) # 1s timeout\nget(timeout=None) # No timeout\nget() # Default timeout behavior, which may not be statically known at the method definition.\n```"
}
]
} }
}, },
{ {
"name": "include", "name": "include",
"in": "query", "in": "query",
"description": "Specify additional output data to include in the response.", "description": "Specify additional output data to include in the response.",
"required": true, "required": false,
"schema": { "schema": {
"oneOf": [
{
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"enum": [ "enum": [
"web_search_call.action.sources",
"code_interpreter_call.outputs", "code_interpreter_call.outputs",
"computer_call_output.output.image_url", "computer_call_output.output.image_url",
"file_search_call.results", "file_search_call.results",
"message.input_image.image_url", "message.input_image.image_url",
"message.output_text.logprobs", "message.output_text.logprobs",
"reasoning.encrypted_content" "reasoning.encrypted_content"
] ],
"title": "ConversationItemInclude",
"description": "Specify additional output data to include in the model response."
} }
},
{
"type": "object",
"title": "NotGiven",
"description": "A sentinel singleton class used to distinguish omitted keyword arguments from those passed in with the value None (which may have different behavior).\nFor example:\n\n```py\ndef get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response: ...\n\n\nget(timeout=1) # 1s timeout\nget(timeout=None) # No timeout\nget() # Default timeout behavior, which may not be statically known at the method definition.\n```"
}
]
} }
}, },
{ {
"name": "limit", "name": "limit",
"in": "query", "in": "query",
"description": "A limit on the number of objects to be returned (1-100, default 20).", "description": "A limit on the number of objects to be returned (1-100, default 20).",
"required": true, "required": false,
"schema": { "schema": {
"oneOf": [
{
"type": "integer" "type": "integer"
},
{
"type": "object",
"title": "NotGiven",
"description": "A sentinel singleton class used to distinguish omitted keyword arguments from those passed in with the value None (which may have different behavior).\nFor example:\n\n```py\ndef get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response: ...\n\n\nget(timeout=1) # 1s timeout\nget(timeout=None) # No timeout\nget() # Default timeout behavior, which may not be statically known at the method definition.\n```"
}
]
} }
}, },
{ {
"name": "order", "name": "order",
"in": "query", "in": "query",
"description": "The order to return items in (asc or desc, default desc).", "description": "The order to return items in (asc or desc, default desc).",
"required": true, "required": false,
"schema": { "schema": {
"oneOf": [
{
"type": "string", "type": "string",
"enum": [ "enum": [
"asc", "asc",
"desc" "desc"
] ]
},
{
"type": "object",
"title": "NotGiven",
"description": "A sentinel singleton class used to distinguish omitted keyword arguments from those passed in with the value None (which may have different behavior).\nFor example:\n\n```py\ndef get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response: ...\n\n\nget(timeout=1) # 1s timeout\nget(timeout=None) # No timeout\nget() # Default timeout behavior, which may not be statically known at the method definition.\n```"
}
]
} }
} }
], ],

View file

@ -347,146 +347,46 @@ paths:
in: query in: query
description: >- description: >-
An item ID to list items after, used in pagination. An item ID to list items after, used in pagination.
required: true required: false
schema: schema:
oneOf: type: string
- type: string
- type: object
title: NotGiven
description: >-
A sentinel singleton class used to distinguish omitted keyword arguments
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
- name: include - name: include
in: query in: query
description: >- description: >-
Specify additional output data to include in the response. Specify additional output data to include in the response.
required: true required: false
schema: schema:
oneOf: type: array
- type: array
items: items:
type: string type: string
enum: enum:
- web_search_call.action.sources
- code_interpreter_call.outputs - code_interpreter_call.outputs
- computer_call_output.output.image_url - computer_call_output.output.image_url
- file_search_call.results - file_search_call.results
- message.input_image.image_url - message.input_image.image_url
- message.output_text.logprobs - message.output_text.logprobs
- reasoning.encrypted_content - reasoning.encrypted_content
- type: object title: ConversationItemInclude
title: NotGiven
description: >- description: >-
A sentinel singleton class used to distinguish omitted keyword arguments Specify additional output data to include in the model response.
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
- name: limit - name: limit
in: query in: query
description: >- description: >-
A limit on the number of objects to be returned (1-100, default 20). A limit on the number of objects to be returned (1-100, default 20).
required: true required: false
schema: schema:
oneOf: type: integer
- type: integer
- type: object
title: NotGiven
description: >-
A sentinel singleton class used to distinguish omitted keyword arguments
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
- name: order - name: order
in: query in: query
description: >- description: >-
The order to return items in (asc or desc, default desc). The order to return items in (asc or desc, default desc).
required: true required: false
schema: schema:
oneOf: type: string
- type: string
enum: enum:
- asc - asc
- desc - desc
- type: object
title: NotGiven
description: >-
A sentinel singleton class used to distinguish omitted keyword arguments
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
deprecated: false deprecated: false
post: post:
responses: responses:

View file

@ -483,87 +483,54 @@
"name": "after", "name": "after",
"in": "query", "in": "query",
"description": "An item ID to list items after, used in pagination.", "description": "An item ID to list items after, used in pagination.",
"required": true, "required": false,
"schema": { "schema": {
"oneOf": [
{
"type": "string" "type": "string"
},
{
"type": "object",
"title": "NotGiven",
"description": "A sentinel singleton class used to distinguish omitted keyword arguments from those passed in with the value None (which may have different behavior).\nFor example:\n\n```py\ndef get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response: ...\n\n\nget(timeout=1) # 1s timeout\nget(timeout=None) # No timeout\nget() # Default timeout behavior, which may not be statically known at the method definition.\n```"
}
]
} }
}, },
{ {
"name": "include", "name": "include",
"in": "query", "in": "query",
"description": "Specify additional output data to include in the response.", "description": "Specify additional output data to include in the response.",
"required": true, "required": false,
"schema": { "schema": {
"oneOf": [
{
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string",
"enum": [ "enum": [
"web_search_call.action.sources",
"code_interpreter_call.outputs", "code_interpreter_call.outputs",
"computer_call_output.output.image_url", "computer_call_output.output.image_url",
"file_search_call.results", "file_search_call.results",
"message.input_image.image_url", "message.input_image.image_url",
"message.output_text.logprobs", "message.output_text.logprobs",
"reasoning.encrypted_content" "reasoning.encrypted_content"
] ],
"title": "ConversationItemInclude",
"description": "Specify additional output data to include in the model response."
} }
},
{
"type": "object",
"title": "NotGiven",
"description": "A sentinel singleton class used to distinguish omitted keyword arguments from those passed in with the value None (which may have different behavior).\nFor example:\n\n```py\ndef get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response: ...\n\n\nget(timeout=1) # 1s timeout\nget(timeout=None) # No timeout\nget() # Default timeout behavior, which may not be statically known at the method definition.\n```"
}
]
} }
}, },
{ {
"name": "limit", "name": "limit",
"in": "query", "in": "query",
"description": "A limit on the number of objects to be returned (1-100, default 20).", "description": "A limit on the number of objects to be returned (1-100, default 20).",
"required": true, "required": false,
"schema": { "schema": {
"oneOf": [
{
"type": "integer" "type": "integer"
},
{
"type": "object",
"title": "NotGiven",
"description": "A sentinel singleton class used to distinguish omitted keyword arguments from those passed in with the value None (which may have different behavior).\nFor example:\n\n```py\ndef get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response: ...\n\n\nget(timeout=1) # 1s timeout\nget(timeout=None) # No timeout\nget() # Default timeout behavior, which may not be statically known at the method definition.\n```"
}
]
} }
}, },
{ {
"name": "order", "name": "order",
"in": "query", "in": "query",
"description": "The order to return items in (asc or desc, default desc).", "description": "The order to return items in (asc or desc, default desc).",
"required": true, "required": false,
"schema": { "schema": {
"oneOf": [
{
"type": "string", "type": "string",
"enum": [ "enum": [
"asc", "asc",
"desc" "desc"
] ]
},
{
"type": "object",
"title": "NotGiven",
"description": "A sentinel singleton class used to distinguish omitted keyword arguments from those passed in with the value None (which may have different behavior).\nFor example:\n\n```py\ndef get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response: ...\n\n\nget(timeout=1) # 1s timeout\nget(timeout=None) # No timeout\nget() # Default timeout behavior, which may not be statically known at the method definition.\n```"
}
]
} }
} }
], ],

View file

@ -350,146 +350,46 @@ paths:
in: query in: query
description: >- description: >-
An item ID to list items after, used in pagination. An item ID to list items after, used in pagination.
required: true required: false
schema: schema:
oneOf: type: string
- type: string
- type: object
title: NotGiven
description: >-
A sentinel singleton class used to distinguish omitted keyword arguments
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
- name: include - name: include
in: query in: query
description: >- description: >-
Specify additional output data to include in the response. Specify additional output data to include in the response.
required: true required: false
schema: schema:
oneOf: type: array
- type: array
items: items:
type: string type: string
enum: enum:
- web_search_call.action.sources
- code_interpreter_call.outputs - code_interpreter_call.outputs
- computer_call_output.output.image_url - computer_call_output.output.image_url
- file_search_call.results - file_search_call.results
- message.input_image.image_url - message.input_image.image_url
- message.output_text.logprobs - message.output_text.logprobs
- reasoning.encrypted_content - reasoning.encrypted_content
- type: object title: ConversationItemInclude
title: NotGiven
description: >- description: >-
A sentinel singleton class used to distinguish omitted keyword arguments Specify additional output data to include in the model response.
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
- name: limit - name: limit
in: query in: query
description: >- description: >-
A limit on the number of objects to be returned (1-100, default 20). A limit on the number of objects to be returned (1-100, default 20).
required: true required: false
schema: schema:
oneOf: type: integer
- type: integer
- type: object
title: NotGiven
description: >-
A sentinel singleton class used to distinguish omitted keyword arguments
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
- name: order - name: order
in: query in: query
description: >- description: >-
The order to return items in (asc or desc, default desc). The order to return items in (asc or desc, default desc).
required: true required: false
schema: schema:
oneOf: type: string
- type: string
enum: enum:
- asc - asc
- desc - desc
- type: object
title: NotGiven
description: >-
A sentinel singleton class used to distinguish omitted keyword arguments
from those passed in with the value None (which may have different
behavior).
For example:
```py
def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
...
get(timeout=1) # 1s timeout
get(timeout=None) # No timeout
get() # Default timeout behavior, which may not be statically known
at the method definition.
```
deprecated: false deprecated: false
post: post:
responses: responses:

View file

@ -4,11 +4,9 @@
# This source code is licensed under the terms described in the LICENSE file in # This source code is licensed under the terms described in the LICENSE file in
# the root directory of this source tree. # the root directory of this source tree.
from enum import StrEnum
from typing import Annotated, Literal, Protocol, runtime_checkable from typing import Annotated, Literal, Protocol, runtime_checkable
from openai import NOT_GIVEN
from openai._types import NotGiven
from openai.types.responses.response_includable import ResponseIncludable
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from llama_stack.apis.agents.openai_responses import ( from llama_stack.apis.agents.openai_responses import (
@ -150,6 +148,20 @@ class ConversationItemCreateRequest(BaseModel):
) )
class ConversationItemInclude(StrEnum):
"""
Specify additional output data to include in the model response.
"""
web_search_call_action_sources = "web_search_call.action.sources"
code_interpreter_call_outputs = "code_interpreter_call.outputs"
computer_call_output_output_image_url = "computer_call_output.output.image_url"
file_search_call_results = "file_search_call.results"
message_input_image_image_url = "message.input_image.image_url"
message_output_text_logprobs = "message.output_text.logprobs"
reasoning_encrypted_content = "reasoning.encrypted_content"
@json_schema_type @json_schema_type
class ConversationItemList(BaseModel): class ConversationItemList(BaseModel):
"""List of conversation items with pagination.""" """List of conversation items with pagination."""
@ -250,13 +262,13 @@ class Conversations(Protocol):
... ...
@webmethod(route="/conversations/{conversation_id}/items", method="GET", level=LLAMA_STACK_API_V1) @webmethod(route="/conversations/{conversation_id}/items", method="GET", level=LLAMA_STACK_API_V1)
async def list( async def list_items(
self, self,
conversation_id: str, conversation_id: str,
after: str | NotGiven = NOT_GIVEN, after: str | None = None,
include: list[ResponseIncludable] | NotGiven = NOT_GIVEN, include: list[ConversationItemInclude] | None = None,
limit: int | NotGiven = NOT_GIVEN, limit: int | None = None,
order: Literal["asc", "desc"] | NotGiven = NOT_GIVEN, order: Literal["asc", "desc"] | None = None,
) -> ConversationItemList: ) -> ConversationItemList:
"""List items. """List items.

View file

@ -6,9 +6,8 @@
import secrets import secrets
import time import time
from typing import Any from typing import Any, Literal
from openai import NOT_GIVEN
from pydantic import BaseModel, TypeAdapter from pydantic import BaseModel, TypeAdapter
from llama_stack.apis.conversations.conversations import ( from llama_stack.apis.conversations.conversations import (
@ -16,6 +15,7 @@ from llama_stack.apis.conversations.conversations import (
ConversationDeletedResource, ConversationDeletedResource,
ConversationItem, ConversationItem,
ConversationItemDeletedResource, ConversationItemDeletedResource,
ConversationItemInclude,
ConversationItemList, ConversationItemList,
Conversations, Conversations,
Metadata, Metadata,
@ -247,7 +247,14 @@ class ConversationServiceImpl(Conversations):
adapter: TypeAdapter[ConversationItem] = TypeAdapter(ConversationItem) adapter: TypeAdapter[ConversationItem] = TypeAdapter(ConversationItem)
return adapter.validate_python(record["item_data"]) return adapter.validate_python(record["item_data"])
async def list(self, conversation_id: str, after=NOT_GIVEN, include=NOT_GIVEN, limit=NOT_GIVEN, order=NOT_GIVEN): async def list_items(
self,
conversation_id: str,
after: str | None = None,
include: list[ConversationItemInclude] | None = None,
limit: int | None = None,
order: Literal["asc", "desc"] | None = None,
) -> ConversationItemList:
"""List items in the conversation.""" """List items in the conversation."""
if not conversation_id: if not conversation_id:
raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}") raise ValueError(f"Expected a non-empty value for `conversation_id` but received {conversation_id!r}")
@ -258,14 +265,12 @@ class ConversationServiceImpl(Conversations):
result = await self.sql_store.fetch_all(table="conversation_items", where={"conversation_id": conversation_id}) result = await self.sql_store.fetch_all(table="conversation_items", where={"conversation_id": conversation_id})
records = result.data records = result.data
if order != NOT_GIVEN and order == "asc": if order is not None and order == "asc":
records.sort(key=lambda x: x["created_at"]) records.sort(key=lambda x: x["created_at"])
else: else:
records.sort(key=lambda x: x["created_at"], reverse=True) records.sort(key=lambda x: x["created_at"], reverse=True)
actual_limit = 20 actual_limit = limit or 20
if limit != NOT_GIVEN and isinstance(limit, int):
actual_limit = limit
records = records[:actual_limit] records = records[:actual_limit]
items = [record["item_data"] for record in records] items = [record["item_data"] for record in records]

View file

@ -131,7 +131,7 @@ class OpenAIResponsesImpl:
tool_context.recover_tools_from_previous_response(previous_response) tool_context.recover_tools_from_previous_response(previous_response)
elif conversation is not None: elif conversation is not None:
conversation_items = await self.conversations_api.list(conversation, order="asc") conversation_items = await self.conversations_api.list_items(conversation, order="asc")
# Use stored messages as source of truth (like previous_response.messages) # Use stored messages as source of truth (like previous_response.messages)
stored_messages = await self.responses_store.get_conversation_messages(conversation) stored_messages = await self.responses_store.get_conversation_messages(conversation)

View file

@ -82,7 +82,7 @@ async def test_conversation_items(service):
assert len(item_list.data) == 1 assert len(item_list.data) == 1
assert item_list.data[0].id == "msg_test123" assert item_list.data[0].id == "msg_test123"
items = await service.list(conversation.id) items = await service.list_items(conversation.id)
assert len(items.data) == 1 assert len(items.data) == 1
@ -120,7 +120,7 @@ async def test_openai_type_compatibility(service):
assert hasattr(item_list, attr) assert hasattr(item_list, attr)
assert item_list.object == "list" assert item_list.object == "list"
items = await service.list(conversation.id) items = await service.list_items(conversation.id)
item = await service.retrieve(conversation.id, items.data[0].id) item = await service.retrieve(conversation.id, items.data[0].id)
item_dict = item.model_dump() item_dict = item.model_dump()

View file

@ -62,7 +62,7 @@ class TestConversationValidation:
conv_id = "conv_nonexistent" conv_id = "conv_nonexistent"
# Mock conversation not found # Mock conversation not found
mock_conversations_api.list.side_effect = ConversationNotFoundError("conv_nonexistent") mock_conversations_api.list_items.side_effect = ConversationNotFoundError("conv_nonexistent")
with pytest.raises(ConversationNotFoundError): with pytest.raises(ConversationNotFoundError):
await responses_impl_with_conversations.create_openai_response( await responses_impl_with_conversations.create_openai_response(
@ -160,7 +160,7 @@ class TestIntegrationWorkflow:
self, responses_impl_with_conversations, mock_conversations_api self, responses_impl_with_conversations, mock_conversations_api
): ):
"""Test creating a response with a valid conversation parameter.""" """Test creating a response with a valid conversation parameter."""
mock_conversations_api.list.return_value = ConversationItemList( mock_conversations_api.list_items.return_value = ConversationItemList(
data=[], first_id=None, has_more=False, last_id=None, object="list" data=[], first_id=None, has_more=False, last_id=None, object="list"
) )
@ -227,7 +227,7 @@ class TestIntegrationWorkflow:
self, responses_impl_with_conversations, mock_conversations_api self, responses_impl_with_conversations, mock_conversations_api
): ):
"""Test creating a response with a non-existent conversation.""" """Test creating a response with a non-existent conversation."""
mock_conversations_api.list.side_effect = ConversationNotFoundError("conv_nonexistent") mock_conversations_api.list_items.side_effect = ConversationNotFoundError("conv_nonexistent")
with pytest.raises(ConversationNotFoundError) as exc_info: with pytest.raises(ConversationNotFoundError) as exc_info:
await responses_impl_with_conversations.create_openai_response( await responses_impl_with_conversations.create_openai_response(

6
uv.lock generated
View file

@ -2661,7 +2661,7 @@ wheels = [
[[package]] [[package]]
name = "openai" name = "openai"
version = "1.107.0" version = "2.5.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "anyio" }, { name = "anyio" },
@ -2673,9 +2673,9 @@ dependencies = [
{ name = "tqdm" }, { name = "tqdm" },
{ name = "typing-extensions" }, { name = "typing-extensions" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/88/67/d6498de300f83ff57a79cb7aa96ef3bef8d6f070c3ded0f1b5b45442a6bc/openai-1.107.0.tar.gz", hash = "sha256:43e04927584e57d0e9e640ee0077c78baf8150098be96ebd5c512539b6c4e9a4", size = 566056, upload-time = "2025-09-08T19:25:47.604Z" } sdist = { url = "https://files.pythonhosted.org/packages/72/39/aa3767c920c217ef56f27e89cbe3aaa43dd6eea3269c95f045c5761b9df1/openai-2.5.0.tar.gz", hash = "sha256:f8fa7611f96886a0f31ac6b97e58bc0ada494b255ee2cfd51c8eb502cfcb4814", size = 590333, upload-time = "2025-10-17T18:14:47.669Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/91/ed/e8a4fd20390f2858b95227c288df8fe0c835f7c77625f7583609161684ba/openai-1.107.0-py3-none-any.whl", hash = "sha256:3dcfa3cbb116bd6924b27913b8da28c4a787379ff60049588547a1013e6d6438", size = 950968, upload-time = "2025-09-08T19:25:45.552Z" }, { url = "https://files.pythonhosted.org/packages/14/f3/ebbd700d8dc1e6380a7a382969d96bc0cbea8717b52fb38ff0ca2a7653e8/openai-2.5.0-py3-none-any.whl", hash = "sha256:21380e5f52a71666dbadbf322dd518bdf2b9d11ed0bb3f96bea17310302d6280", size = 999851, upload-time = "2025-10-17T18:14:45.528Z" },
] ]
[[package]] [[package]]