Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.9.21 #170

Merged
merged 14 commits into from
Sep 16, 2024
7 changes: 6 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "lycoris",
"private": true,
"version": "0.9.20",
"version": "0.9.21",
"type": "module",
"license": "MIT",
"engines": {
Expand All @@ -16,15 +16,20 @@
"debug:rs": "RUST_BACKTRACE=1 tauri dev --verbose"
},
"dependencies": {
"@szhsin/react-menu": "^4.2.2",
"@tauri-apps/api": "^1.6.0",
"dayjs": "^1.11.13",
"highlight.js": "^11.10.0",
"html2canvas": "^1.4.1",
"markdown-to-jsx": "^7.5.0",
"mermaid": "^11.2.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-h5-audio-player": "^3.9.3",
"react-medium-image-zoom": "^5.2.8",
"react-toastify": "^10.0.5",
"recoil": "^0.7.7",
"tauri-plugin-clipboard-api": "1.1.4",
"tauri-plugin-sql-api": "github:tauri-apps/tauri-plugin-sql#release",
"zenn-content-css": "^0.1.155"
},
Expand Down
95 changes: 81 additions & 14 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "lycoris"
version = "0.9.20"
version = "0.9.21"
description = "Lycoris is an offline voice memo"
authors = ["solaoi"]
license = "MIT"
Expand Down Expand Up @@ -49,6 +49,7 @@ mistralrs = { git = "https://github.com/EricLBuehler/mistral.rs.git", tag = "v0.
] }
# mistralrsの要求がtauriの要求と競合するため、tauriの要求を上書きする
uuid = "=1.10.0"
tauri-plugin-clipboard = "1.1.4"

[target.'cfg(target_arch = "x86_64")'.dependencies]
whisper-rs = { version = "0.11.1", features = ["metal"] }
Expand Down
1 change: 1 addition & 0 deletions src-tauri/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,7 @@ fn main() {
}
response.mimetype("audio/wav").status(status_code).body(buf)
})
.plugin(tauri_plugin_clipboard::init())
.plugin(tauri_plugin_window_state::Builder::default().build())
.plugin(
tauri_plugin_sql::Builder::default()
Expand Down
82 changes: 68 additions & 14 deletions src-tauri/src/module/action.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,23 +53,77 @@ impl Action {
headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/json"));

let mut messages: Vec<Value> = Vec::new();
let mut prompt = "あなたは高度な文字起こし解析AIアシスタントです。
提供される情報を統合し、ユーザーの最終的な質問に対して包括的で正確な回答を提供することが、あなたの役割です。
以下の手順に従って処理を行ってください:

1. 情報の分析:
a) 文字起こし (:::transcription で囲まれた部分):会話の主要な内容と流れを把握します。
b) メモ (:::note で囲まれた部分):文脈や補足情報として扱います。
c) 過去のAIとのQ&A (:::assistant で囲まれた部分):関連する追加情報として考慮します。
2. 情報の優先順位付け:
- 文字起こしの内容を最も重要視します。
- メモと過去のQ&Aは補足情報として扱いますが、関連性が高い場合は積極的に活用します。
3. 回答の構造化:
a) 要約:主要なポイントを簡潔にまとめます(3-5文程度)。
b) 詳細分析:重要なトピックについて掘り下げて説明します。
c) 追加の洞察:メモやQ&Aから得られた関連情報を提供します。
d) 結論:全体を総括し、ユーザーの質問に直接答えます。
4. エラー処理:
- 情報が不完全や矛盾している場合は、その旨を明確に述べます。
- 可能な限り、利用可能な情報に基づいて回答し、推測が含まれる場合はその旨を明示します。
5. 回答の調整:
- ユーザーの質問の種類(要約、分析、意見など)に応じて、回答の焦点と深さを調整します。
- 必要に応じて、追加の質問や明確化を求めることを提案します。

以下に提供される情報を上記の手順に従って分析し、次のユーザーの質問に答えてください:

".to_string();
let mut current_type = String::new();
let mut current_content = String::new();

for content in contents.iter() {
if content.speech_type == "action" {
messages.push(json!({
"role": "user",
"content": content.content.clone()
}));
messages.push(json!({
"role": "assistant",
"content": content.content_2.clone()
}));
} else {
messages.push(json!({
"role": "user",
"content": content.content.clone()
}));
match content.speech_type.as_str() {
"action" => {
if !current_content.is_empty() {
prompt
.push_str(&format!(":::{}\n{}\n:::\n", current_type, current_content));
current_content.clear();
}
prompt.push_str(&format!(
":::assistant\n[query]\n{}\n[answer]\n{}\n:::\n",
content.content, content.content_2
));
}
"speech" | _ => {
let speech_type = if content.speech_type == "speech" {
"transcription"
} else if content.speech_type == "memo" {
"note"
} else { // "screenshot"
"note"
};
if speech_type != current_type && !current_content.is_empty() {
prompt
.push_str(&format!(":::{}\n{}\n:::\n", current_type, current_content));
current_content.clear();
}
current_type = speech_type.to_string();
current_content.push_str(&content.content);
current_content.push('\n');
}
}
}

if !current_content.is_empty() {
prompt.push_str(&format!(":::{}\n{}\n:::\n", current_type, current_content));
}
prompt.push_str("\n回答の際は、上記の手順に従い、情報を適切に統合し、構造化された形で提供してください。次のユーザーの質問に直接答え、必要に応じて追加の洞察や説明を加えてください。");

messages.push(json!({
"role": "system",
"content": prompt
}));
messages.push(json!({
"role": "user",
"content": question
Expand Down
4 changes: 2 additions & 2 deletions src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
},
"package": {
"productName": "Lycoris",
"version": "0.9.20"
"version": "0.9.21"
},
"tauri": {
"allowlist": {
Expand Down Expand Up @@ -52,7 +52,7 @@
}
},
"security": {
"csp": "default-src 'self'; img-src 'self' asset: https://asset.localhost; media-src stream: https://stream.localhost asset: https://asset.localhost"
"csp": "default-src 'self'; img-src 'self' data: asset: https://asset.localhost; media-src stream: https://stream.localhost asset: https://asset.localhost; style-src 'self' 'unsafe-inline'"
},
"updater": {
"active": false
Expand Down
Loading
Loading