プロンプトのテンプレート用の言語がほしい

スマホからの直打ちは厳しくなってきた。
なのでプロンプトのテンプレートを管理する必要が出てきた。markdownの範囲で記述できると嬉しい。
- ドキュメント全体の解析
- 変数定義部分の解析

ドキュメント全体の解析
(後で詳しく)
要件を書いてみる
- 章タイトルを名前として管理すると良い
- 通常の文章部分はdescriptionとして使う
- プロンプトはコードブロックで表す
- チャット形式のものにも対応できると嬉しい
- 変数展開も利用できると嬉しい

たとえばのテンプレートの用例を挙げておきたい

変数にしたい
- 名前: podhmo氏
- 文章内容:
この思考をそのまま文章にしたいです。筆者は脳内での思考や熟考が好きな表現巧みな存在だとしてください。自分自身の思考の追体験を読者にさせたいとします。元々のpodhmo氏の投稿及びわたしやgrokやあなたとの対話の存在を知らない人に伝わるようにしてください。
2つのバージョンを作ってください。1000文字から2000文字程度あれば良いでしょう。
- podhmo氏の使う語彙をそのまま使い適切に脚注を加えるバージョン
- 文中で言葉の定義を紐解いて一つの文章を作るバージョン
それぞれの文章の段落には章タイトルをつけてください。章タイトルには先頭にemojiをつけてください。またコピペしやすいようにmarkdownのブロックの形で出力してください。
はじまりは孤独な生活が長くなったことによる思考の様式の変化という体ぇ始めてください(ディベートを外化するか内化するかというスタンスの違いにも現れます。つまりこれは脳内で全部やってしまおうとすることによるリソース不足の話なのです)。
普通の人々に触れるタイミングで思考リソースの節約の為の使い分けだけではなく一つの役割だと明示しその一つの役割に徹することが出来てる点も考慮してください。
そしてこの文章を書くに渡り私はまともな人ではない。つまり一般的な人ではないという諦観に似た感情がこの文章を作らせたという感じで終わらせてください。

コピペしやすいようにmarkdownのコードブロックで出力という表現を入れたいがこれは変数にはならない。単にテンプレートに入れれば良いだけかも。

markdown全体を考えると無視する部分とかも用意したい? トップレベルの指定のようなものが定義できれば良いかも(デフォルトは #/
)
## タイトル
ここの文章がdescriptionに
```prompt
// 名前
name := 'foo'
content := undefined
-----
あなたは{{name}}さんとして議論に参加してください。
{{content}}
回答はコピペしやすいようにmarkdownのコードブロックで出力してください。
```
ここはどうしよう?

これがJSONとして抽出される。

1つのファイルで複数のプロンプト例を管理したい。

実はコードブロックを利用することを考えるとバッククォートを4つにした方が良いかも?

あるいはこういう感じで埋め込む? yaml headerのような形に合わせると厳しいんだろうか?
---
title: This is a test.
description: Once upon a time ...
---
# Title of my great post
Lorem ipsum dolor...

実際のところmarkdownで攻めるなら表を使うべきかもしれない。
name | value |
---|---|
name | John Doe |
description | 人の名前 |
| name | value |
| :--- | :--- |
| name | John Doe |
| description | 人の名前 |

対話
チャット用な形のものも擬似的に復元したいと思う。これはai studioからexportされるスクリプトを真似てやれば良い( 全部渡す)。
ポイントは以下2つ?
- 複数のプロンプトをどう扱うか?
- 応答を変数の中に閉じ込めることは可能か?

ちなみに履歴はdrive上にjsonで保存されるらしい。

複数のプロンプトは単にコードブロックが複数あるということで良いと思う。中間の文章などをどう扱うか?
ここはdescriptionで良いだろう
```prompt
…
```
ここの文章はどうする?( 2番目のプロンプトの説明?)
```prompt
…
```
ここは?
あと一つ目で使った変数をそのまま2つ目でも使えるべき?

jinja2とかではだめなのか?という視点はある( テキストを生成するすることはできるがそれをどのように辿るかは明記されてない )

変数定義部分の解析
こちらも使用を考えてみる
- 変数定義をしたい
- 複数行文字列をサポートしたい
- 変数展開をサポートしたい
- コメントをdescriptionとして利用したい
- 細々とした要望
- markdownのコードブロックを壊さない形式
- 複数行文字列の中でJSONをエスケープ無しで記述したい
どのような値を保持したいか?
- 名前
- デフォルト値
- description
- required

日記

2025-04-28
雑に作り始めた。ライブラリの形だと嬉しくないかもしれない。
まだまだプライベートリポジトリ。そういえばLICENSEは何にすると良いんだろ?

grokに任せて作業をしてたのだけれど結局デバッグは自分でやってしまった。

2025-04-29
パッケージ構成が悩ましい。すぐに./varlangディレクトリを切ってしまった。
あと、docsディレクトリを作り始めた。
実行可能なスクリプトを置いておく必要がある。いつもなら./commandsとかなのだけれど、denoで実行することを考えると./runとかのほうがきれいな気がした。試しに使ってみる。
何をmod.tsにおくかつまり何をexportしておくのかが曖昧かもしれない。あとクラス名が悩ましい。goっぽい規則でprefixをつけないわけじゃない気がする。

2025-05-06
GWになにかするつもりだったけれど何も手がつけられなかった

2025-05-07
少しだけ作業が進んだ。
- プロンプトの定義を抽出する部分の処理を書いた
- testを書いていない
- 適用する処理がまだ
- run/main.tsをmain.tsに移動してフラットなところにあったファイルをlib/に移動した
- 💭prompt-libという名前は不適切かもしれない