diff options
| author | sigoden <sigoden@gmail.com> | 2023-03-13 10:09:01 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-13 10:09:01 +0800 |
| commit | 9c04455e363d076cd7582fe9d476aa0fd6d86ea8 (patch) | |
| tree | d59b91e982604abf225e3c5be8aa2db1c27201c8 /src/config/mod.rs | |
| parent | 8fa2e2683bdb89aef5baf22957af1d86ed38aca7 (diff) | |
| download | aichat-9c04455e363d076cd7582fe9d476aa0fd6d86ea8.tar.gz | |
feat: support role args (#69)
* feat: support role args
We can use role args to pass some additional arguments to the prompt.
```
- name: convert:json:yaml
prompt: convert __ARG1__ below to __ARG2__
```
`:json:yaml` is `role args`. It has two args:
- arg1 `json`, it will replace __ARG1__ in prompt
- arg2 `yaml`, it will replace __ARG2__ in prompt
```
〉.role convert:json:yaml
name: convert:json:yaml
prompt: convert json below to yaml
temperature: null
〉.role convert:yaml:json
name: convert:yaml:json
prompt: convert yaml below to json
temperature: null
```
different role args, will generate different prompts.
* small updates
Diffstat (limited to 'src/config/mod.rs')
| -rw-r--r-- | src/config/mod.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index a37140c..569e434 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -120,7 +120,7 @@ impl Config { } pub fn find_role(&self, name: &str) -> Option<Role> { - self.roles.iter().find(|v| v.name == name).cloned() + self.roles.iter().find(|v| v.match_name(name)).cloned() } pub fn config_dir() -> Result<PathBuf> { @@ -200,7 +200,8 @@ impl Config { pub fn change_role(&mut self, name: &str) -> Result<String> { match self.find_role(name) { - Some(role) => { + Some(mut role) => { + role.complete_prompt_args(name); if let Some(conversation) = self.conversation.as_mut() { conversation.update_role(&role)?; } |
