Skip to content

Commit

Permalink
Merge pull request #170 from solaoi/main
Browse files Browse the repository at this point in the history
v0.9.21
  • Loading branch information
solaoi authored Sep 16, 2024
2 parents fdaf365 + 68e4784 commit 506a8bb
Show file tree
Hide file tree
Showing 16 changed files with 1,131 additions and 66 deletions.
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

0 comments on commit 506a8bb

Please sign in to comment.