Responses API (`/v1/responses`) and Vertex AI: model access for a multi-turn benchmark
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 15/100
Hướng nghiên cứu
This is a design proposal, so start by deciding the approach rather than writing code. Read models/clients/factory.py (the _SUPPORTED_PROVIDER_TYPES check), models/clients/adapters/openai_compatible.py (where _ROUTE_CHAT is fixed to /chat/completions) and models/clients/parsing.py (where parse_assistant_message drops reasoning items). Done means a maintainer-agreed design covering routing, passed-through fields and replay of reasoning items.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Priority Level: Medium (Nice to have)
Is your feature request related to a problem? Please describe.
OpenAI models already work through the OpenAI-compatible adapter (Chat Completions). This is only about
OpenAI's other endpoint, /v1/responses, and only for multi-turn calls to reasoning models.
The benchmark below needs two things from Data Designer: the Responses API (this section), and Vertex AI
(see "Second gap: Vertex AI" below, folded in from #92).
Some evaluations send a model its own earlier reasoning back on the next turn, because models trained on
preserved thinking expect it. MindEval (Apache-2.0), a
multi-session counselling benchmark that runs on NeMo User Sim, does this for the model under test, and
User Sim now offers the same as an opt-in.
OpenAI's reasoning models return their reasoning only through the Responses API, as reasoning items
(encrypted when the call asks for include: ["reasoning.encrypted_content"] with store: false). Through
Chat Completions they return none. So through Data Designer, which reaches OpenAI-type endpoints with its
OpenAI-compatible adapter, these models can be called but their reasoning cannot be carried to the next
turn: they are evaluated without the context they would have in deployment, and their scores are not
comparable with runs that carry it.
Today MindEval works around this by calling those models through litellm's Responses bridge
(openai/responses/<model>, azure/responses/<deployment>) instead of Data Designer. Its README:
OpenAI reasoning models return it only through the Responses API: run them as
azure/responses/<deployment>(oropenai/responses/<model>) with
--counselor_params '{"include": ["reasoning.encrypted_content"], "store": false}'.
Describe the solution you'd like
A way for a Data Designer model to use the Responses API and hand back what is needed to continue the
conversation, for example:
- a provider or endpoint option that sends a model's calls to
/v1/responses(OpenAI and Azure OpenAI) - request fields passed through (
include,store,reasoning) - the reasoning items returned on the response, and accepted again on the earlier assistant turns of the
next request, so a caller can replay them
If there is already a way to do this in Data Designer, a pointer would be just as good, which is why
this is filed as a question as much as a request.
Describe alternatives you've considered
- Chat Completions only: works, but the reasoning is lost between turns (the problem above).
- litellm's Responses bridge outside Data Designer: what MindEval does now. It works, but those calls
bypass Data Designer's model layer, so User Sim's accounting, retries and model configuration don't
apply to them. - A proxy in front of Data Designer (e.g. a LiteLLM proxy translating
/chat/completionsto
/responses): gets the call through, but the reasoning items come back as an extra field that Data
Designer's parser drops, and there is no way to send them back on the next turn. previous_response_idwithstore: true: keeps the reasoning on OpenAI's side instead of
carrying it. Not usable where data must not be stored, and it ties each turn to one provider session.
Agent Investigation
Checked on main (2026-10-14) and in 0.9.4:
models/clients/factory.py:_SUPPORTED_PROVIDER_TYPES = ("openai", "anthropic"); any other
provider type raises. Plugins can't add a model client (plugin types: column generator, seed reader,
processor).models/clients/adapters/openai_compatible.py: chat calls always post to_ROUTE_CHAT = "/chat/completions"; no other route for chat.models/clients/parsing.py:parse_assistant_messagekeepscontent,reasoning_content(text),
tool_callsand images; other message fields, such as reasoning items, are dropped.- No existing issue found ("responses api", "encrypted_content", "/v1/responses").
- In MindEval (
mindeval/llm.py), litellm returns the items asreasoning_items(or under
provider_specific_fields) on the message; the benchmark stores them with the turn and sends them back
on that turn next time (mindeval/session.py,CARRIED = ("reasoning_content", "thinking_blocks", "reasoning_items")).
Second gap: Vertex AI
The same benchmark uses Claude and Gemini on Vertex AI, today through litellm's vertex_ai/ provider,
outside Data Designer's model layer. What blocks it, as far as we can see in the code (main):
- Claude on Vertex (per Google Cloud's API docs) speaks the Anthropic Messages format, but at
…/publishers/anthropic/models/{model}:rawPredict, with the model in the URL,
anthropic_version: "vertex-2023-10-16"in the body, and a Google access token. The Anthropic adapter
(models/clients/adapters/anthropic.py) posts to{endpoint}/v1/messageswithx-api-keyand the
model in the body. - Gemini on Vertex works through Vertex's OpenAI-compatible endpoint, but authenticates with a Google
access token that expires after about an hour, while a provider's key is resolved once when the client
is built (models/clients/factory.py,_resolve_api_key). A long run fails once the token expires.
Useful pieces: Google credentials (Application Default Credentials or a service account) with token
refresh during a run, and the Vertex URL and body shape for Claude.
Additional context
Related: User Sim's opt-in replay of the assistant's own reasoning (NVIDIA-NeMo/UserSim#31) currently
covers OpenAI-compatible endpoints that return reasoning_content; this would extend it to OpenAI's own
reasoning models.
- I've reviewed existing issues and the documentation
- This is a design proposal, not a "please build this" request
- Ngôn ngữ chính
- Python
- Star
- 2.4k
- Fork
- 234
- Merge trung bình
- 23 giờ
- Pull request đã merge (30 ngày)
- 75
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của NVIDIA-NeMo/DataDesigner
-
`ValidationColumnConfig` misaligns rows and discards the whole batch after an upstream row is droppedCó thể đã có người làm @suryapilla đã nhận 2 ngày trước. Đang mởtriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
NVIDIA-NeMo/DataDesigner#1073 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
docs: required_columns description is incomplete for LLM and multimodal columnsCó thể đã có người làm @rksharma-owg đã nhận 8 ngày trước. Đang mởbug triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
NVIDIA-NeMo/DataDesigner#1002 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enforce \from future import annotations` via ruff FA102 rule`Có thể đã có người làm @chethanuk đã nhận 44 ngày trước. Đang mởtask
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
NVIDIA-NeMo/DataDesigner#760 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
NVIDIA-NeMo/DataDesigner#1089 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
NVIDIA-NeMo/DataDesigner#1088 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của NVIDIA-NeMo/DataDesigner
Issue tương tự
-
Project submission:Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
slavakurilyak/awesome-ai-agents#845 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directoryCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởdifficulty:2 enhancement good first issue
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 92/100
MakazhanAlpamys/Soup#2178 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[BUG] dcg.waggr permutation p-values are folded twice, so near-zero scores get the smallest p-valuesĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
scverse/rapids-singlecell#854 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGLCó thể đã có người làm @ninglinLiu đã nhận hôm nay. Đang mởarea:frontend backend:slang bug direction:input
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 1 ngày
-
random_elements(unique=True) on an OrderedDict: ZeroDivisionError once only zero weights remain, AssertionError with use_weighting=FalseCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 13 ngày