summaryrefslogtreecommitdiffstats
path: root/src/config
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-06-13 07:41:29 +0800
committerGitHub <noreply@github.com>2024-06-13 07:41:29 +0800
commit255b194bcc538b2557caa60c5b607b4c4bfc0abd (patch)
tree2a2995f7a33df2d3024f489de4435a06e94dcef8 /src/config
parent64982b4510e38153885bfd0a78c250110b3e03c5 (diff)
downloadaichat-255b194bcc538b2557caa60c5b607b4c4bfc0abd.tar.gz
feat: add `.starter` repl command (#594)
Diffstat (limited to 'src/config')
-rw-r--r--src/config/bot.rs17
-rw-r--r--src/config/input.rs2
-rw-r--r--src/config/mod.rs18
3 files changed, 28 insertions, 9 deletions
diff --git a/src/config/bot.rs b/src/config/bot.rs
index fef61f2..e1e1df6 100644
--- a/src/config/bot.rs
+++ b/src/config/bot.rs
@@ -54,10 +54,6 @@ impl Bot {
}
};
- let render_options = config.read().render_options()?;
- let mut markdown_render = MarkdownRender::init(render_options)?;
- println!("{}", markdown_render.render(&definition.banner()));
-
let rag = if rag_path.exists() {
Some(Arc::new(Rag::load(config, "rag", &rag_path)?))
} else if embeddings_dir.is_dir() {
@@ -101,6 +97,10 @@ impl Bot {
Ok(data)
}
+ pub fn banner(&self) -> String {
+ self.definition.banner()
+ }
+
pub fn name(&self) -> &str {
&self.name
}
@@ -120,6 +120,10 @@ impl Bot {
pub fn rag(&self) -> Option<Arc<Rag>> {
self.rag.clone()
}
+
+ pub fn converstaion_staters(&self) -> &[String] {
+ &self.definition.conversation_starters
+ }
}
impl RoleLike for Bot {
@@ -227,14 +231,13 @@ impl BotDefinition {
format!(
r#"
-**Conversation Starters**
+## Conversation Starters
{starters}"#
)
};
format!(
r#"# {name} {version}
-{description}{starters}
-"#
+{description}{starters}"#
)
}
}
diff --git a/src/config/input.rs b/src/config/input.rs
index 1686245..0c93c1f 100644
--- a/src/config/input.rs
+++ b/src/config/input.rs
@@ -129,7 +129,7 @@ impl Input {
self.text = text;
}
- pub async fn maybe_embeddings(&mut self, abort_signal: AbortSignal) -> Result<()> {
+ pub async fn use_embeddings(&mut self, abort_signal: AbortSignal) -> Result<()> {
if self.text.is_empty() {
return Ok(());
}
diff --git a/src/config/mod.rs b/src/config/mod.rs
index 7e5d6cf..b1eb41f 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -918,7 +918,15 @@ impl Config {
if let Some(bot) = &self.bot {
bot.export()
} else {
- bail!("No rag")
+ bail!("No bot")
+ }
+ }
+
+ pub fn bot_banner(&self) -> Result<String> {
+ if let Some(bot) = &self.bot {
+ Ok(bot.banner())
+ } else {
+ bail!("No bot")
}
}
@@ -1023,6 +1031,14 @@ impl Config {
.collect(),
".rag" => self.list_rags().into_iter().map(|v| (v, None)).collect(),
".bot" => list_bots().into_iter().map(|v| (v, None)).collect(),
+ ".starter" => match &self.bot {
+ Some(bot) => bot
+ .converstaion_staters()
+ .iter()
+ .map(|v| (v.clone(), None))
+ .collect(),
+ None => vec![],
+ },
".set" => vec![
"max_output_tokens",
"temperature",