summaryrefslogtreecommitdiffstats
path: root/src/config/mod.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2023-03-13 10:09:01 +0800
committerGitHub <noreply@github.com>2023-03-13 10:09:01 +0800
commit9c04455e363d076cd7582fe9d476aa0fd6d86ea8 (patch)
treed59b91e982604abf225e3c5be8aa2db1c27201c8 /src/config/mod.rs
parent8fa2e2683bdb89aef5baf22957af1d86ed38aca7 (diff)
downloadaichat-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.rs5
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)?;
}