---
title: "chat - Talent 注册与优先级"
---

Solon AI 提供了灵活的才能注册机制，你可以根据才能的生命周期需求，选择将其注册为全局默认才能，或者在单次请求中动态注入。



### 1、全局默认注册（静态配置）


如果你希望某个才能（如：基础安全审计、通用常识、全局翻译）在 ChatModel 的每一次对话中都生效，可以在构建 ChatModel 时通过 Builder 进行注册。


```java
ChatModel model = ChatModel.of(config)
        .defaultTalentAdd(talent) //或者（带优先级） .defaultTalentAdd(index, talent) 
        .build();
       
```

### 2、单次请求注入（动态覆盖）

在某些复杂的业务场景中，你可能需要根据当前的上下文（如：不同的业务入口、不同的用户角色）动态地决定加载哪些才能。


```java
model.prompt("...")
    .options(o -> o.talentAdd(talent)) //或者（带优先级） o.talentAdd(index, talent) 
    .call();
```


### 3、才能的执行优先级（顺序）


当多个才能同时存在时，Solon AI 会按照注册顺序依次调用各才能的 injectInstruction 方法。

* 顺序执行：才能指令会按序累加到 System Message 中。
* 工具染色：各才能自带的工具会自动打上所属才能的标签，模型会根据 System Message 中定义的 SOP 逻辑，选择最合适的才能工具进行调用。



指定执行顺序：

```java
model.prompt("...")
    .options(o -> o.talentAdd(2, talent)) //（带优先级）
    .call();
```



### 4、与 Tool 注册的关系

才能注册不仅注入了 Prompt 指令，同时也完成了其内部 getTools() 集合的自动注册。你无需再手动调用 defaultToolAdd 来挂载属于该才能的工具。


**提示：** 如果一个功能只需要“执行逻辑”而不需要“SOP 指令约束”，建议使用工具形态； 如果该功能包含复杂的业务逻辑、需要动态准入、或者需要引导模型的思考路径，则强烈建议封装为 Talent。



### 5、才能的动态启用与禁用

注册后的才能可通过 `isEnabled()` / `setEnabled(Boolean)` 在运行时动态控制是否生效，无需重新构建 ChatModel 实例。

```java
// 禁用某个已注册的才能（保留注册，但不参与请求）
talent.setEnabled(false);

// 重新启用
talent.setEnabled(true);

// 检查当前是否启用
boolean enabled = talent.isEnabled();
```

这在以下场景很有用：
- A/B 测试：临时禁用某个 Talent，对比效果
- 资源控制：按需开启耗资源的 Talent（如联网搜索）
- 权限管控：根据用户权限动态启停特定能力
