読書メモ:LLMのプロンプトエンジニアリング
読み終わったので感想とメモ。若干駆け足で読んでしまったのであとでもう一度用語は振り返りたい
感想
LLMが何をしているのか・何が得意でどうするとうまく使えるのが書かれていて参考になった。 LLMの進化が激しいので、本書のプラクティスや手法はすぐに必要なくなることがありうる。だけど、原理ややっていること自体は、パラダイムシフトが起きない限りは変わらないと思うので生きると思う。
LLMはあくまでドキュメントの補間であり、それをファインチューニングやRLHFを行うかで目的を達成させているということは覚えておきたい。
読み終えたことで、ClaudeCodeやCline・RooCodeなどがどのようにコンテキストを扱っているのかが気になってきたのでどこで見てみたい。
最後のほうはLLMを使ったアプリを開発する上で役立ちそうなことが書いてあった。現時点では作る気持ちがないので、ここはささっと流し読みをした。仕組みや難しさを知るうえで作ってみたい気持ちはあるので、その際にはちゃんと読みなおしたいところ。
反省
本を読めてないので読む環境に身を置くぞ!!とiPadだけもって外で読みに行ったので、読書メモがとれてなかった。そのため、読み終えてのメモを書こうと思っても情報が抜け落ちてしまってたので反省。
TauriでEnum値の受け渡しについて
Tauriというクロスプラットフォーム開発用のフレームワークがある。 UIはFrontend技術、アプリケーションはRustで開発することができる。 今回、FrontendからRustを呼び出すときに少し躓いたので忘備録としてメモをする
Tauri::commandでRustの関数を呼び出すときに、値を持つEnumを渡すときに少し手間取った。 具体的には、Rust側に以下のような定義をしていて、それをフロントエンドからどのような型で呼び出せばよいのかがわからず時間がかかっていた。
#[derive(Deserialize)]
pub enum Args{
A,
B { value: String },
}
#[tauri::command]
pub fn invokeFunction(
args: Args
) {
...
こちらのサイトを見てみると 、Deserializeを実装していれば引数に指定可能ということだった。 また、tagを使うことでJSONの内部に識別子を含めることができそうだった。 https://serde.rs/enum-representations.html#internally-tagged
これを用いることで、TypeScriptでは以下の型でinovkeすることでRustの関数を呼び出せた。
type Args = {
type: A
} | {
type: B,
value: string
}
serdeの動作をもう少し見てみたいので、次はtagを使わなかった時にどのような値を渡せばよいかを見ていきたい
忘れなかった
今日はPCの電源を切る前に思い出すことができた。よかった
ただ、何も書くことが思いつかない…今日やったことといえば髪を切りにいった。 髪を切ってもらってるときの会話がいつも苦手なので行くのが億劫である。 髪切ってもらってるときは無言が落ち着く。そのとき、となりでめっちゃしゃべってる環境だとより良い。なんか気まずくならない気がする。
2日坊主
日記を書くぞと決意して2日で終わってしまってた。 前回書いてからすでに1週間ほどの間が空いてしまってた。
空いてしまったのは、めんどくさくなったとかではなく完全に書くことを忘れてしまってたからである。 習慣として根付くのを待つしかないのか… 忘れてしまう問題の対策としては、カレンダーでリマインドをセットするという手が簡単そうである。ただ、それだとやらされてる感が出てきてしまい、めんどくさくなってやめることも自分の性格だとありえそう
結局根付くまで自分の意識でやり続けるのが良いのかなと思いながら続けていこうと思う
感情の言語化
日記書くぞ~って言ってたのに2日目にしてもう書くのを忘れるところだった。あぶない…
こういうのは習慣化するのが大事なので、短くてもいいから今日感じたことを書いていきたい
最近、言語化って大事だな~って感じてる。
めちゃくちゃ不安に感じていたことも、言語化してみると案外大したことない、もしくは、すぐに解決できそうなことだったりする。
ただ、すべてのことが言語化できてるかというとそうではないなと感じてることもある。
もしくは言語化を試してみても、うまく言語化できないことで、ほんとは感じてた・思ってたことが抜け落ちてしまうこともありうるよなと。
どうすればよいのかというと、言語化を試していくしかないのかな?と思ってる。言語を出すことを鍛えたり、語彙や表現を学んでいって身に着けてくしかないかな?と
この日記もその能力を鍛えたいなと思っての試みなので、やはり忘れずに書いていきたい
雑メモ:Quest3のDepthAPIが動かなかった時
このAPIを別のUnityProjectに取り込んだ時に、うまく動かないときがあった。 具体的には、OcclusionTogglerというSceneでHard Occlusionにしても、Occlusionしてくれないことがあった その時に、解決した方法を忘れないように雑にメモ ただ、何が起きてて、どうして解決したのかがわからないため再現性がない点は注意
OcculusメニューのProjectSettingToolでAutoFixをすると直った。 おそらく、シェーダーの設定がおかしくなってしまってたのかなと推測はできる。ただ、ログが残ってないので詳細は不明。
次問題が起きたときに、どこでwarningが起きたのかをもう一度見ようと思う。