Use openai to generate chat thread titles
This commit is contained in:
@@ -65,8 +65,9 @@ pub async fn generate_response(ctx: &Context, msg: &Message, oai: &OAI) {
|
||||
};
|
||||
|
||||
// Get the thread channel ID
|
||||
let thread_name = generate_thread_name(oai, &parsed_content, 99).await;
|
||||
let response_channel = match msg.channel_id.create_private_thread(&ctx.http, |thread| {
|
||||
thread.name(truncate(&parsed_content, 99)).kind(ChannelType::PublicThread)
|
||||
thread.name(thread_name).kind(ChannelType::PublicThread)
|
||||
}).await {
|
||||
Ok(c) => {
|
||||
let allow = Permissions::SEND_MESSAGES;
|
||||
@@ -140,9 +141,40 @@ pub async fn generate_response(ctx: &Context, msg: &Message, oai: &OAI) {
|
||||
// };
|
||||
}
|
||||
|
||||
fn truncate(s: &str, max_chars: usize) -> &str {
|
||||
match s.char_indices().nth(max_chars) {
|
||||
async fn generate_thread_name(oai: &OAI, s: &str, max_chars: usize) -> String {
|
||||
println!("HERE: {}", s);
|
||||
let message = ChatCompletionMessage {
|
||||
role: GPTRole::User,
|
||||
content: format!("---\n{}\n---\nSummarize the message above into a concise Discord thread title", s)
|
||||
};
|
||||
let request = ChatCompletionRequest {
|
||||
model: oai.default_model.clone(),
|
||||
messages: vec![message],
|
||||
temperature: Some(0.5),
|
||||
top_p: None,
|
||||
n: None,
|
||||
max_tokens: Some(oai.max_tokens),
|
||||
presence_penalty: Some(0.6),
|
||||
frequency_penalty: Some(0.0),
|
||||
user: None
|
||||
};
|
||||
// Truncate the response to the max number of characters
|
||||
let mut response = match s.char_indices().nth(max_chars) {
|
||||
None => s,
|
||||
Some((idx, _)) => &s[..idx],
|
||||
}
|
||||
Some((idx, _)) => &s[..idx]
|
||||
}.to_string();
|
||||
// Set the response to the OAI response
|
||||
match oai.chat_completion(request).await {
|
||||
Ok(r) => {
|
||||
if !r.choices.is_empty() {
|
||||
response = r.choices[0].message.content.clone();
|
||||
} else {
|
||||
warn!("No choices received in the response from OpenAI");
|
||||
}
|
||||
}
|
||||
Err(err) => {
|
||||
error!("Could not get response from OpenAI: {}", err.message);
|
||||
}
|
||||
};
|
||||
return response;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
pub mod audio;
|
||||
pub mod help;
|
||||
pub mod message;
|
||||
pub mod chat;
|
||||
pub mod ping;
|
||||
pub mod schedule;
|
||||
|
||||
Reference in New Issue
Block a user