Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions backend/onyx/chat/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,14 @@ class MessageResponseIDInfo(BaseModel):
reserved_assistant_message_id: int


class MultiModelMessageResponseIDInfo(BaseModel):
"""Response info for multi-model chat: one user message, multiple assistant messages."""

user_message_id: int | None
reserved_assistant_message_ids: list[int] # One per model
model_names: list[str] # Display names for UI


class StreamingError(BaseModel):
error: str
stack_trace: str | None = None
Expand Down Expand Up @@ -200,6 +208,7 @@ class LLMMetricsContainer(BaseModel):
Packet
| StreamStopInfo
| MessageResponseIDInfo
| MultiModelMessageResponseIDInfo
| StreamingError
| UserKnowledgeFilePacket
| CreateChatSessionID
Expand Down
454 changes: 365 additions & 89 deletions backend/onyx/chat/process_message.py

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions backend/onyx/server/query_and_chat/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ class SendMessageRequest(BaseModel):
message: str

llm_override: LLMOverride | None = None
# For multi-model chat: list of LLM overrides to compare (2-3 models supported)
llm_overrides: list[LLMOverride] | None = None

allowed_tool_ids: list[int] | None = None
forced_tool_id: int | None = None
Expand Down
2 changes: 2 additions & 0 deletions backend/onyx/server/query_and_chat/placement.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ class Placement(BaseModel):
tab_index: int = 0
# Used for tools/agents that call other tools, this currently doesn't support nested agents but can be added later
sub_turn_index: int | None = None
# For multi-model chat: identifies which model's response this packet belongs to (0, 1, or 2)
model_index: int | None = None
Loading