a2ui-project / a2ui-project/a2ui
Unify System Instruction Generation for Text and Tool Output Modes
- 主要言語
- TypeScript
- スター
- 16.4k
- フォーク
- 1.3k
- 平均マージ
- 2日 13時間
- マージ済み PR(30日)
- 134
説明
## Context
Currently, `a2ui.schema.manager.generate_system_prompt` and `send_a2ui_to_client_toolset` provide two separate paths for instructing the LLM on how to handle A2UI. This makes it difficult for developers to know exactly what is being sent in the final system instruction.
## Problem
- Developers need to set paremeters `include_schema` and `include_examples` to False to avoid conflicts with tool-based instructions, which creates ambiguity when a toolset is already providing that context.
- Appending multiple strings from different modules makes prompt tuning and debugging difficult.
## Proposed Sollution
Refactor the prompt generation logic into a unified "Skill" or configuration object.
- ~~Introduce an explicit `A2UIOutputMode` enum: TEXT (for direct schema injection) and TOOL (for tool-calling environments).~~
- ~~Simplify the API so that system instructions are generated based on the selected mode, preventing accidental double-injection of schemas or instructions.~~
After reviewing both https://github.com/google/A2UI/pull/1466 and https://github.com/google/A2UI/pull/1465 together, I want to propose a design refinement that addresses the parameter naming issue and consolidates both concerns cleanly.
- Repurpose `output_mode` enum for the output strictness level.
- Introduce a new `schema_injection_mode` enum for where and when the schema should be injected.
```python
class A2UISchemaInjectionMode(Enum):
"""Where/when the schema is injected."""
EMBEDDED = "embedded" # Schema in system prompt (upfront, one-time)
TOOL = "tool" # Schema injected per-request by toolset
NONE = "none" # No schema injection (default)
class A2UIOutputMode(Enum):
"""How the LLM should prioritize A2UI vs. text."""
A2UI_FIRST = "a2ui_first" # A2UI blocks first, minimal text after
TEXT_FIRST = "text_first" # Text and A2UI can be interleaved (default)
# Future: STRICT_A2UI, A2UI_ONLY for even stricter modes
```
コントリビューションガイド
調査の方向性
Examine the `a2ui.schema.manager.generate_system_prompt` and `send_a2ui_to_client_toolset` functions to understand the current separate prompt generation paths. Review the linked pull requests #1466 and #1465 for context on the proposed design. The goal is to create a unified configuration object, likely a 'Skill', that handles schema injection based on a new `schema_injection_mode` enum. Start by locating the relevant modules in the codebase and understanding how system instructions are currently assembled.
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- typescript
- 領域
- backend-api-design
- issue の種類
- リファクタリング
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100