Replies: 6 comments 1 reply
-
|
Hey @xspylol! Confirmed -- the web-cookie variants do NOT carry the tool-call translation layer. They were built as conversational proxies (text-in / text-out against the public web chat), and the upstream UI does not natively accept the OpenAI The proper fix is what you described: prompt-inject the tool schemas into the system message, then parse the model's output (DeepSeek's web frontend uses a Workaround for now: use the API-based |
Beta Was this translation helpful? Give feedback.
-
|
Awesome, thanks for the confirmation and the detailed breakdown! That makes total sense. I'll use the official API for my Hermes agent workflows and keep the web-cookie for regular chat until the translation layer is built. Really appreciate you looking into this and opening a tracking issue for it! |
Beta Was this translation helpful? Give feedback.
-
|
Tracking issue is up: #2820 — covers the bidirectional translation layer (request side: serialize OpenAI |
Beta Was this translation helpful? Give feedback.
-
|
Thanks for the working repro and the reference code, @xspylol -- I've moved the substantive discussion to your fuller write-up in #2925 so it all lives in one place. Short version: you're right that nothing shipped yet -- #2820 was closed prematurely and |
Beta Was this translation helpful? Give feedback.
-
|
Closing the loop, @xspylol -- the tool-call translation you specced (and built a reference MITM for) shipped in v3.8.9, and #2820 is now closed. What landed, matching your design:
Your repro and reference impl drove all of this -- thank you. If your Hermes agent still hits anything off on |
Beta Was this translation helpful? Give feedback.
-
|
This is a very useful repro. For agentic workflows, I think the important distinction is chat compatibility vs workflow compatibility. A web-cookie provider may be fine for normal chat, but once the client expects OpenAI-style Your FastAPI proxy is a good proof of the architecture:
For production agent use, I’d still separate this from the official DeepSeek API path. Web-cookie translation is useful for experimentation, but long coding-agent loops expose stability issues very quickly: tool-call consistency, stale sessions, rate limits, fallback behavior, and response-format drift. This is exactly why OpenAI-compatible providers need to be tested at the workflow level, not just with a single chat completion request. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
When using the DeepSeek Web Cookie provider as a custom endpoint for an autonomous agent (Hermes Agent), the model does not execute tools. Instead, it outputs the tool calls as raw markdown text (e.g., typing bash ...).
Expected Behavior:
When the client sends an OpenAI-compatible request with a tools array, the OmniRoute adapter should:
Inject the tool schemas into the DeepSeek Web UI's system prompt (since the web UI doesn't natively support the tools JSON parameter).
Parse the model's text output (which likely uses XML tags or specific markdown blocks for tool use).
Translate that text back into a standard OpenAI tool_calls JSON array before returning the response to the client.
Actual Behavior:
OmniRoute appears to be stripping the tools array from the request and returning the model's raw text response. Because the client (Hermes) never receives a structured tool_calls object, it treats the response as a standard conversational message and prints the bash command to the screen instead of executing it.
Environment:
Client: Hermes Agent (sending standard OpenAI tools array)

OmniRoute Provider: DeepSeek Web Cookie
Symptom: Tool calls returned as raw text instead of finish_reason: "tool_calls".
Beta Was this translation helpful? Give feedback.
All reactions