a2ui-project / a2ui-project/a2ui

Unify System Instruction Generation for Text and Tool Output Modes

Đang mở
#1,289 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
component: agent_sdk P2 type: feature/enhancement
Ngôn ngữ chính
TypeScript
Star
16.4k
Fork
1.3k
Merge trung bình
2 ngày 13 giờ
Pull request đã merge (30 ngày)
134

Mô tả

## 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
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
typescript
Lĩnh vực
backend-api-design
Loại issue
Tái cấu trúc
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.