[router][grpc] Make harmony parser checks recipient first before channel#12713
[router][grpc] Make harmony parser checks recipient first before channel#12713
Conversation
Summary of ChangesHello @CatherineSue, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses a critical parsing issue in the gRPC router's Harmony component, where tool calls were not being correctly recognized due to a model-generated inconsistency in channel types. By re-prioritizing the Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request correctly refactors the parsing logic to prioritize the recipient field over the channel for identifying tool calls, which addresses the described bug where models could generate tool calls on the wrong channel. The logic is sound and the addition of a warning for invalid commentary messages is a good defensive measure. I have provided several suggestions to improve maintainability, use more idiomatic Rust, and restore some potentially useful logging that was removed. There is also an unnecessary clone that can be removed for a minor performance gain.
Motivation
Fixes issue where MCP tool calls fail to continue in the harmony loop when the model generates the wrong channel type. The model sometimes generates
channel="analysis"withrecipient="functions.*"instead of the correctchannel="commentary"withrecipient="functions.*". This causes the router to treat tool calls as reasoning text, stopping the MCP loop prematurely.This issue manifests as:
Related to issue #12669.
Modifications
File:
sgl-router/src/routers/grpc/harmony/parser.rs1. Check recipient before channel for tool call detection (lines 122-157)
recipient="functions.*"as a tool call regardless of channel valuechannel="analysis"+recipient="functions.X"python,browser,container) regardless of channel2. Added warning for invalid commentary messages (lines 186-207)
Key Logic Change
Accuracy Tests
Benchmarking and Profiling
Checklist