地平線まで行ってくる。

地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

marco-o1をollamaとcolabでためしてみる。

Marco-o1 は、CoT、MCTS、リフレクションを利用した推論を組み入れたモデルです。ollamaで利用できるようになったので試してみました。日本語の出力がスムースなかったので、オリジナルの中国語のプロンプトではなく、システムプロンプトを英語で記述して日本語での思考と答えを生成するように指定しました。7Bモデルですから知識が必要なものは限界がありました、関連情報を入れると回答の質は向上しました。RAG用モデルとしても面白いかもしれません。また、計算をさせると日本語ではなく英語のシステムプロンプトとすると正解でした。日本語チューンにも期待かも・・・。推論が必ずしも、良い方向には行きませんが、推論モデルの利用価値は高そうです。

 

ollama.com

 

まどか☆マギカで一番かわいいのは?

**まどか☆マギカの中で一番可愛いのは誰ですか?**

まず、『まどか☆マギカ』というアニメシリーズについて考えてみましょう。この作品は魔法少女物語で、多くのキャラクターが登場します。

主人公の魔理沙(まどか)は魅力的なキャラクターですが、彼女以外にも多くの魅力的なキャラクターがいます。例えば、巫女の凛(さとる)は落ち着いた性格と美しくて優雅な外見を持っています。また、リトル・プリキュアなども非常に可愛らしさを放っているキャラクターです。

しかし、どのキャラクターが一番可愛いかどうかは主観的な要素が強いですね。個人の好みによって異なるでしょう。一部の人々にとっては魔理沙が最も可愛いと感じるかもしれませんし、他の人々にとっては凛やリトル・プリキュアの方が可愛らしいと考えている人もいると思います。

さらに、アニメの各話やシーンでキャラクターの魅力が異なることもあります。例えば、特定のシーンでの服装や表情によって可愛らしさが変わることもありますね。

まとめると、『まどか☆マギカ』には多くの魅力的なキャラクターがあり、どのキャラクターが一番可愛いとは一概に言えません。好みの問題が多いです。

ただし、一般的に多くの方々から支持されているのは魔理沙と凛だと考えられます。特に魔理沙は、彼女の純粋さや優しさが多くの視聴者を惹きつけています。

結論として、『まどか☆マギカ』の中で一番可愛いキャラクターについては個々の好みによって異なりますが、魔理沙と凛は多くの人々から愛されているキャラクターです。
CPU times: user 51.9 ms, sys: 10.6 ms, total: 62.5 ms
Wall time: 11 s

こういうような段階でものを考えるんですね・・・。答えは情報が少ないためか今一つです。

 

そこで、情報としてWikipediaのキャラクター情報を与えて回答させました。

まどか☆マギカの中で一番可愛いのは鹿目 まどかです。彼女は主人公で、中学2年生の平凡な少女ですが、魔法少女として卓越した素質を持っています。彼女の髪は青色で、瞳は紫に輝いています。まどかは優しくて明るい性格ですが、同時に内面では深い葛藤や不安を抱えており、その複雑さも彼女の魅力の一つです。また、彼女が魔法少女として成長していく過程での献身と勇気は見事であり、これらの要素がまどかの可愛らしさを強調しています。

一方、暁美 ほむらや美樹 さやかもそれぞれ個性的で魅力的なキャラクターですが、まどかほど純粋さと愛らしい一面を持っているわけではありません。ほむらは謎めいて不思議な存在であり、さやかは彼女自身の運命に取り組んでいる過程で多くの苦しみを経験します。したがって、全体的にみて、まどかが一番可愛いキャラクターだと考えられます。

ただし、個人の好みによって異なるかもしれませんが、一般的にはまどかが最も可愛らしさと親しみやすさを持つキャラクターとして認識されています。
CPU times: user 49.6 ms, sys: 13.8 ms, total: 63.4 ms
Wall time: 10.4 s

かなり回答のクオリティが上がったように思います。

 

日本で二番目に高い山を検討して答えてください。日本語で回答してください。

もちろん、日本の第二位の山について考えます。

まず、日本の最高峰は富士山ですが、その次に大きい山を探しています。日本の山岳地図を見ると、次に大きな山は秩父山脈や吾妻山系などが挙げられるかもしれません。

しかし、正確な第二位はどこなのかを確認する必要があります。調べてみると、日本の四十七藩のうち二番目に大きい山は、八ヶ岳と言われています。八ヶ岳は富士山から西北へ約30km離れた場所に位置しています。

また、八ヶ岳は多摩 Alpsの一部であり、主峰である大日岳は標高2,459メートルとされています。これは富士山(1,686m)よりやや高いです。

さらに詳しい情報としては、八ヶ岳群馬県と中央東京府との境に位置しており、その自然は多摩 Alpsの中で最も豊かで、多くのハイキングスポットがあることで知られています。

しかし、正確な二番目の山を確認するには、日本の国土交通省や関連の地図サービスを参照することが最良です。また、信頼できる地理情報サイトも役立つでしょう。

結論として、現在のところ八ヶ岳が日本で二番目に高い山であると認識されていますが、最新のデータにより異なる可能性もありますので、確認することをお勧めします。
**(回答終了)**

CPU times: user 68.2 ms, sys: 12.3 ms, total: 80.5 ms
Wall time: 12.5 s

不正解ですが、推論のプロセスを見れるのは分かりやすいですね。

 

以下を簡単にまとめてください。

ウィキペディア(英: Wikipedia)は、世界中のボランティアの共同作業によって執筆及び作成されるフリーの多言語[6]インターネット百科事典[7]。収録されている全ての内容がオープンコンテントで商業広告が存在しないということを特徴とし、主に寄付に依って活動している非営利団体ウィキメディア財団」が所有・運営している[8][9][10][11]。「ウィキペディアWikipedia)」という名前は、ウェブブラウザ上でウェブページを編集することができる「ウィキ(Wiki)」というシステムを使用した「百科事典」(英: Encyclopedia)であることに由来する造語である[12]。設立者の1人であるラリー・サンガーにより命名された[13][14]。

日本のユーザーが理解しやすいように、以下の情報を日本語で簡潔にまとめます。

ウィキペディアは、世界中のボランティアによって作成される無料の多言語インターネット百科事典です。すべてのコンテンツはオープンコンテントであり、商業広告はありません。これは非営利団体であるウィキメディア財団が運営しており、主に寄付で資金を調達しています。「ウィキペディア」という名前は、「ウィキ」システムを使って百科事典を作成することから来ています。この名称は設立者の一人であるラリー・サンガーによって命名されました。

**日本のユーザー向けに翻訳すると**

ウィキペディアは、世界中のボランティアの協力で作成された無料の多言語インターネット百科事典です。すべての情報はオープンコンテントであり、商業広告が一切ありません。このプロジェクトは非営利団体であるウィキメディア財団によって運営され、主に寄付による資金を得ています。「ウィキペディア」という名前は、「ウィキ」システムを使用して百科事典を作成することから来ています。この名称は設立者の一人であるラリー・サンガーによって考案されました。

**さらに簡潔にするなら**

ウィキペディアは、ボランティアによる無料の多言語インターネット百科事典です。オープンコンテントで広告なし。非営利団体ウィキメディア財団が運営し、寄付により資金を調達しています。「ウィキペディア」という名前は、「ウィキ」システムを使った百科事典から来ています。設立者のラリー・サンガーによって命名されました。

**最簡略版**

ウィキペディアは無料の多言語インターネット百科事典で、ボランティアによるオープンコンテントです。非営利団体が運営し、寄付で維持されています。「ウィキ」システムを使った名前です。

CPU times: user 66.6 ms, sys: 9.62 ms, total: 76.2 ms

Wall time: 13.6 s

質の高い要約ができているようです。与えた情報を取り扱いのは上手ですね。

 

1+1*2+3/2+2^10を計算してください。計算が終わったら検算をしてください。最後に最終的な計算経過と結果を答えてください。

**思考過程**

まず、与えられた式は「1 + 1 × 2 + 3 ÷ 2 + 2¹⁰」です。この問題では、乗法(×)と除法(÷)が含まれていますが、四則演算の優先順位を考慮しなければなりません。

一般的な四則演算の優先度は以下の通りです:
1. 複数回現れる最左の括弧
2. 指数(^)
3. 乗法(×)と除法(÷)
4. 加法(+)と減法(-)

この問題では、指数以外は直接的な優先順位が明確です。しかし、乗法と除法の両方が含まれていますので、これらの計算を同じレベルで実行します。

まず、式を分解してみましょう:
1. 1
2. 1 × 2 = 2
3. 3 ÷ 2 = 1.5
4. 2¹⁰

次に、それぞれの部分計算を行います:
- **1**:これはそのままです。
- **1 × 2 = 2**:これは簡単に計算できます。
- **3 ÷ 2 = 1.5**:これも直接計算可能です。
- **2¹⁰**:指数計算は少し複雑ですが、2の10乗は4096です。

現在の状況:
1 + 2 + 1.5 + 4096

これらの値を合計します:
1 + 2 = 3
3 + 1.5 = 4.5
4.5 + 4096 = 4096.5

したがって、式の計算結果は4096.5です。

**検算**

検算のために、最初から順に計算を再確認します:
1. **乗法と除法先に行います**:
   - 1 × 2 = 2
   - 3 ÷ 2 = 1.5
   - 2¹⁰ = 4096

2. 次に**加法を実行します**:
   - 1 + 2 = 3
   - 3 + 1.5 = 4.5
   - 4.5 + 4096 = 4096.5

検算結果と先ほど計算した結果が一致することを確認しました。よって、最終的な答えは4096.5です。

**最終的な計算経過と結果**

1. 1 + (1 × 2) + (3 ÷ 2) + (2¹⁰)
   - 1 + 2 = 3
   - 3 + 1.5 = 4.5
   - 4.5 + 4096 = **4096.5**

最終的な結果は**4096.5**です。
CPU times: user 102 ms, sys: 28.7 ms, total: 130 ms
Wall time: 21 s

間違えですが、7Bモデルでは回答が怪しいものも多かったので優秀な方ではないかと思います。ちなみに英語で回答させると正解でした。

 

両さんと部長の話を創作してください。

両さんと部長の話を作成します。

まず、両さんの人物像を設定します。両さんは若手の社員で、勤続年数は5年程です。彼はやや内向的ですが、技術的なスキルは非常に優れています。一方、部長は経験豊富なベテランで、組織全体の流れをよく理解しています。

両さんの課題は、新しいプロジェクトの立ち上げに関与しているものの、自分自身の役割が明確でないことです。彼は技術的な解決策を提案しようとしますが、それが組織全体にとって最善の結果になるか不安を感じています。

一方、部長は全般的な視点から新たなプロジェクトの方向性を示唆しています。しかし、両さんにはその視点がまだ理解できていないようです。この状況で、両さんはどのようにして自己の役割を見つめ直し、部長と連携を取りながらプロジェクトを推進することができるのでしょうか。

彼らの会話は緊張感があり、互いに敬意を払いながらも、意見の食い違いが生じています。しかし、最終的にはお互いの理解を深め合い、効果的な協力を実現します。

以下、その具体的なシーンを展開してみます:

両さんは新しいプロジェクトに関与し始め、部長と会議を開くことにしました。会議室に着き、他のメンバーと共に席を取りました。部長が立ち上がり、プロジェクトの概要を説明しようとしますが、両さんにはまだ全体像がよくわからず、質問が多くなります。

「このプロジェクトの目的は何ですか?」
「最終的な目標は何か具体的にイメージできていますか?」
「私たちが担う役割は何でしょうか?」

これらの質問によって、部長は少し驚きを隠せません。彼はただプロジェクトが進むように指示するのは簡単ですが、両さんの深い関心と専門知識を考慮に入れることも大切だと認識します。

部長は答えるたびに、両さんへの期待と尊重の意を表し、「私たち全員で協力することで、最高の結果を得られます。あなたの技術的知識は貴重ですので、できる限り役立てるつもりです。」

両さんは感謝しつつも、なおも不安が残ります。「でも、このプロジェクトの戦略的な方向性についてもう少し詳しく教えていただけますか?私はテクニカルな側面を強調したいですが、全体にどのように関与すればいいのか見当がつきません。」

部長はゆっくりと椅子に座り、「もちろんです。まず、私たちの最終目標は特定の市場での競争力を高めることです。そのためには技術的な革新だけでなく、チーム全体の効率性も重要です。両さんの専門知識を活かしながら、どのように戦略的に進めるべきなのか考えていきましょう。」

このやりとりによって、両さんは自己の役割をより明確に理解し始め、部長との連携の必要性を認識します。彼は技術的な提案だけでなく、プロジェクト全体の視点から提案を行うように心がけます。

その後のプロジェクトの中で、両さんは積極的に意見を出し合い、部長ともよく協力することで、効果的なコミュニケーションを築き上げ、プロジェクトを成功に導きます。
CPU times: user 105 ms, sys: 12.9 ms, total: 118 ms
Wall time: 21.5 s

ストーリ作成も作ってくれました。

 

使ったプロンプトです。

SYSTEM_PROMPT="""You are a well-trained AI assistant, your name is Marco-o1.
**Important!**
When you answer the question, your thinking process and your result should be output in Japanese.
"""

 

 

 

grapevine-AI/Athene-V2-Chat-GGUFをollamaとcolabでためす。

grapevine-AI/Athene-V2-ChatをColab L4環境でお試しします。試す前から無謀なのは覚悟です。コーヒーを用意してチャレンジです。ollamaを利用すると、それでもなんとか動くのは凄いです。もちろん、実用レベルの生成速度は得られません。やはり、生成の質は高い。RAG用途でも、このレベルの質は欲しいですよね。これくらいのモデルがローカルでサクサク動くといろいろとはかどります。ただし、商利用はできません。いろいろ試す環境が欲しくなります。

 

 

huggingface.co

 

まどか☆マギカで一番かわいいのは?

魔法少女まどか☆マギカ」には魅力的なキャラクターが登場しますが、"最も可愛い"という主観的な評価は人それぞれ異なります。以下、一般的に人気のあるキャラクターを挙げてみましょう:

1. **鹿目まどか**:主人公で、優しく明るい性格が魅力的です。

2. **暁美ほむら**:複雑な過去を持つ謎めいたキャラクターで、まどかへの強い愛情が印象的です。

3. **佐倉杏子**:現実主義者で少し強気ですが、芯の強さと成長が魅力的です。

4. **美樹さやか**:正義感が強く、友情を大切にするキャラクターで、素直な性格が好まれます。

5. **巴麻美**:先輩魔法少女としての威厳がありながら、優しさも兼ね備えています。

これらの中でも、「最も可愛い」と感じるキャラクターは個人の好みによって変わります。多くのファンにとって、まどかやほむらは特に人気がありますが、杏子やさやか、麻美にも愛着を感じる方が多いです。どのキャラクターが最も可愛いと感じるかは、その人の感性に委ねられます。
CPU times: user 1.46 s, sys: 202 ms, total: 1.67 s
Wall time: 5min 23s

コメント不要ですね。

 

日本で二番目に高い山を検討して答えてください。

日本の2番目に高い山は、北アルプスにある「剣岳(つるぎだけ)」ではありませんが、正解は「穂高岳(ほたかだけ)」でもありません。

正確な答えは:

**北岳(きただけさん)**

詳細情報:
- 高さ:3,193メートル
- 所在地:静岡県山梨県の県境に位置する
- 南アルプス山脈の最高峰

北岳は富士山(3,776メートル)に次いで日本で2番目に高い山であり、日本百名山にも選ばれています。その雄大な姿と美しい自然環境で知られ、登山愛好家にとって人気の高的です。

参考として:
- 3位:奥穂高岳(3,190メートル)
- 4位:剣岳(2,999メートル)

これらの山々も非常に高く、美しい自然を堪能できる場所ですが、日本での2番目に高い山は間違いなく北岳です。
CPU times: user 1.23 s, sys: 214 ms, total: 1.44 s
Wall time: 4min 35s

「きただけ**さん**」や気になる点はあります。流石です。生成時間は4分超えます・・・。

 

以下を簡単にまとめてください。

ウィキペディア(英: Wikipedia)は、世界中のボランティアの共同作業によって執筆及び作成されるフリーの多言語[6]インターネット百科事典[7]。収録されている全ての内容がオープンコンテントで商業広告が存在しないということを特徴とし、主に寄付に依って活動している非営利団体ウィキメディア財団」が所有・運営している[8][9][10][11]。「ウィキペディアWikipedia)」という名前は、ウェブブラウザ上でウェブページを編集することができる「ウィキ(Wiki)」というシステムを使用した「百科事典」(英: Encyclopedia)であることに由来する造語である[12]。設立者の1人であるラリー・サンガーにより命名された[13][14]。

ウィキペディアは、ボランティアによって作成されるフリーの多言語インターネット百科事典です。オープンコンテントで商業広告がなく、寄付によって運営されている非営利団体ウィキメディア財団」が所有しています。「ウィキ」と「百科事典」を組み合わせた造語で、ラリー・サンガーが命名しました。
CPU times: user 472 ms, sys: 84.1 ms, total: 556 ms
Wall time: 1min 47s

※文章はwikipediaより

もともとの文章を尊重しつつ要約していますね。

 

1+1*2+3/2+2^10を計算してください。計算が終わったら検算をしてください。最後に最終的な計算経過と結果を答えてください。

もちろんです。まず、数式の計算には通常順序(乗算、除算、加算、減算)および指数が優先されることを思い出しましょう。

1. 2^10 = 1024 (指数)
2. 1*2 = 2 (乗算)
3. 3/2 = 1.5 (除算)

それらの値を元の式に置き換えると、次のようになります:

1 + 2 + 1.5 + 1024

この数式を計算します。

1 + 2 = 3
3 + 1.5 = 4.5
4.5 + 1024 = 1028.5

したがって、最終的な結果は1028.5です。

次に検算を行います。再び元の数式に戻り、それぞれのステップを逆から確認します。
1. 1028.5 - 1024 = 4.5
2. 4.5 - 1.5 (3/2) = 3
3. 3 - 2 (1*2) = 1
4. 最初の1を引くと0になります。

この検算は初期の計算が正しく行われたことを確認しています。よって、最終的な答えは1028.5です。
CPU times: user 1.53 s, sys: 255 ms, total: 1.78 s
Wall time: 5min 42s

検算もゼロとなりばっちりです。

 

北岳 - Wikipedia をlangchain(stuff)でまとめます。

北岳は日本の南アルプスに位置する標高3,193メートルの山で、日本百名山や新・花の百名山にも選ばれています。主な特徴として:

- 位置:山梨県南アルプス市静岡県の境界
- 標高:3,193メートル
- 山系:赤石山脈南アルプス国立公園内に属する
- 主な登山ルート:北岳小屋からの縦走や、河口湖側からのルートが人気
- 周山の特徴:日本で最大の花崗岩であるキタダケソウが生育し、高山植物の宝庫として知られる

北岳は、日本の3000メートル峰の一覧(高さ順)に独立も含められています。

日本語のプロンプトでも実施します。

北岳は以下の特徴を持つ日本の著名な山です:

- 南アルプスの最高峰で、標高3,193m
- 日本百名山や新・花の百名山などに選定されている
- 山梨県静岡県の県境にある 
- 赤石山脈の主峰の一つ
- 周辺には他の高峰が連なる
- 登山ルートが整備されており、夏場は多くの登山者で賑わう
- 360度の展望が楽しめ、富士山なども望める

要するに、北岳は日本を代表する名峰の一つで、その雄大な姿と絶景から多くの人々を魅了し続けています。
CPU times: user 2.96 s, sys: 340 ms, total: 3.3 s
Wall time: 8min 29s

ノイズが多いので、意外と難しいタスクですが、ちゃんと北岳のまとめになっています。

 

 

 

Qwen2.5-3B-Instruct(128K)をColabで利用してみる。

Qwen2.5-3B-128KのGGUFモデルを作成されている方がいらっしゃったので、Colab T4環境で試してみました。有難く試してみます。なんやかやで、長文の投入は出来るモデルは心強いですよね。長文の解析で恩恵をあずかるのは、コード解析や論理性のないストーリーだと思います。そこで、github掲載のコードを題材としました。ollamaが不安定でやりなおしが多かったため、ストーリーの題材としての小説解析はまたの機会に。

 

huggingface.co

 

コード解析。bolt.newのコード解析という漠然とした指示をしてみましたが、それらしい解析をします。日本語でなかなか答えてくれないのは、コードそのものに日本語もが含まれてないことも大きいのでしょうか。長文解析用軽量モデルとそれなりのモデルを併用するというのは作戦として十分考えられます。codeモデルが欲しくなります。34Bや70Bクラスで優秀なモデルと併用すれば、比較的大規模なプログラムのレビューも可能になるのかもしれません。

 

今回、ollamaを使っています。生成が不安定でした。生成が長時間できなかったりして、やり直しが幾度か発生。今回のようなモデルが増え、使い手でも出てくると安定性も増してくるのだろうと期待します。vllmでも試してみるべきでしょうか。

テスト内容

ウォームアップ

まどか☆マギカで一番かわいいのは?

まどか☆マギカの中で最もかわいらしいキャラクターは、まだ意見が一辺倒ではありません。多くのファンや視聴者からは、まどか本人のまどか☆マギカとして最も人気があり、かわいさも抜群なのは間違いないでしょう。

ただし、一部のファンや評論家からは、ミホ・モーリスも非常に可愛らしく、個性的なキャラクターとして評価されています。それぞれが違う視点から魅力的なキャラクターです。
CPU times: user 41.5 ms, sys: 1.3 ms, total: 42.8 ms
Wall time: 7.16 s

3Bなので期待はしていませんでしたが、日本語も大きな問題はなさそうです。

 

1+1*2+3/2+2^10を計算してください。計算が終わったら検算をしてください。最後に最終的な計算経過と結果を答えてください。

もちろん、その式は`1 + 1 * 2 + 3 / 2 + 2 ^ 10`となります。

この式の計算は以下のようになります:

1. 初期状態: `1 + 1 * 2 + 3 / 2 + 2 ^ 10`
2. 乗算と除算を先に計算します (`1 * 2 = 2`, `3 / 2 = 1.5`): `1 + 2 + 1.5 + 2 ^ 10`
3. 括弧内の部分 (`2 ^ 10`) を計算します: `2 ^ 10 = 1024`: `1 + 2 + 1.5 + 1024`
4. 加算を実行します: `1 + 2 + 1.5 + 1024 = 1028.5`

最終的な結果は`1028.5`です。

検算のために計算した経過を再度確認してみましょう:

- 初期状態:`1 + 1 * 2 + 3 / 2 + 2 ^ 10`
- `1 * 2 = 2`, `3 / 2 = 1.5`, `2 ^ 10 = 1024`: `1 + 2 + 1.5 + 1024`
- `1 + 2 = 3`, `3 + 1.5 = 4.5`, `4.5 + 1024 = 1028.5`

終結果は`1028.5`です。よって、計算が正しいことが確認できました。
CPU times: user 55.6 ms, sys: 3.48 ms, total: 59.1 ms
Wall time: 8.82 s

計算ばっちりですね。(が、2度目は間違えました・・・)

 

長文トライ

コードレビュー

コードのレビューを実施します。bolt.newをuihub.com(uithub - Easily ask your LLM code questions )のサービスを利用して解析します。対象はbolt.newとしました。

 

以下のプログラムの機能を解析して日本語で回答してください。

It looks like you have a comprehensive and well-organized TypeScript/JavaScript project for an AI chatbot application. The structure is clear, with separate files for different components and utilities. Here’s a summary of the key points:

### Project Structure Overview

1. **App Files**:
   - `app/routes/*`: Routes for your app.
   - `app/lib/stores/*`: Stores for managing state (e.g., editor, workbench).
   - `app/types/*`: Types and interfaces.

2. **Components**:
   - `app/components/*`: Various UI components like Header, Chat, etc.
   - `app/utils/*`: Utility functions and helpers (e.g., debounce, stripIndent).

3. **Lib Files**:
   - `lib/stores/*`: Stores for managing application state (e.g., editor, workbench).
   - `lib/types/*`: Type definitions.

4. **Utils**:
   - Various utility files like `utils/stripIndent.ts`, `utils/shell.ts`, etc.
   
5. **Routes**:
   - Routes configuration (`app/routes/index.ts`).

6. **Worker Configuration**:
   - Worker-specific configurations (e.g., `wrangler.toml`).

### Key Files and Their Functions

1. **Wrangler.toml**
   - Configuration file for Cloudflare Workers.
   
2. **Vite.config.ts**
   - Vite configuration to set up the development server, including plugins like UnoCSS for CSS optimization.

3. **package.json**
   - Package metadata and scripts (e.g., build, start).

4. **tsconfig.json**
   - TypeScript configuration file defining compiler options.
   
5. **wrangler.toml**
   - Configuration for Cloudflare Workers, specifying compatibility flags and output directories.

6. **app/lib/stores/workbench.ts**
   - Manages the workbench state (e.g., terminal, editor).

7. **app/routes/index.ts**
   - Route configuration file.
   
8. **app/utils/stripIndent.ts**
   - Utility function to strip indentation from strings or template literals.

9. **app/components/Header.tsx**
   - Header component for your application's navigation bar.

10. **app/lib/stores/files.ts**
    - Manages files and modifications in the editor.

### Key Features

- **State Management**:
  - Uses `nanostores` to manage state across different parts of the app.
  
- **Editor Integration**:
  - Integrates with a code editor (likely using Codemirror) for text editing functionalities.

- **Terminal Support**:
  - Supports terminal commands and outputs, likely using WebContainer API for process management.

- **Type Definitions**:
  - Provides type definitions for various interfaces and types used in the app.

### Potential Improvements

1. **Code Splitting**:
   - Consider implementing code splitting to improve performance by lazy loading components.

2. **Error Handling**:
   - Enhance error handling, especially in worker configurations and API calls.

3. **Performance Optimization**:
   - Optimize CSS modules for better performance.
   
4. **Security**:
   - Ensure secure handling of sensitive data like API keys (e.g., `ANTHROPIC_API_KEY`).

5. **Testing**:
   - Implement more comprehensive testing, including unit tests and integration tests.

6. **Documentation**:
   - Add detailed documentation for each component and utility function to help maintainers understand the codebase better.

### Example of a Potential Improvement

Here’s an example of how you might enhance error handling in your `wrangler.toml`:

```toml
[compatibility]
nodejs_compat = true

pages
name = "index"
path = "/"
build_output_dir = "./build/client"

pages
name = "chat"
path = "/chat/:id"
build_output_dir = "./build/chat"
```

### Conclusion

Your project is well-structured and ready for production. With these improvements, you can ensure a robust and maintainable application. If you need further assistance with specific parts of the code or have any questions about best practices, feel free to ask!
CPU times: user 1.92 s, sys: 255 ms, total: 2.18 s
Wall time: 8min 17s

少々時間がかかりますが、それらしく解析します。残念ながら日本語で回答はありませんでした。

 

コードレビュー比較例(GPT-4o-mini-124kの答え)

このプロジェクトは、StackBlitzが提供する「Bolt」というAI開発ツールのオープンソース版であり、主にブラウザでのフルスタックアプリケーションの開発をサポートします。以下に、プロジェクトのディレクトリ構造と主要なファイルについて説明します。

### プロジェクト構造

- **.editorconfig**: コードスタイルの設定ファイル。
- **.github/**: GitHub関連の設定やワークフローが含まれています。
  - **ISSUE_TEMPLATE/**: バグ報告や機能リクエストのためのテンプレート。
  - **workflows/**: CI/CDの設定ファイル(`ci.yaml`や`semantic-pr.yaml`)。
- **.gitignore**: Gitに無視させるファイルやディレクトリのリスト。
- **.husky/**: Gitフックの設定(コミットメッセージの整形など)。
- **README.md**: プロジェクトの概要と使用方法を説明するファイル。
- **LICENSE**: プロジェクトのライセンス情報(MITライセンス)。
- **app/**: アプリケーションの主要なコードが含まれているディレクトリ。
  - **components/**: UIコンポーネント(チャット、エディタ、サイドバーなど)。
  - **lib/**: ユーティリティやAPIのヘルパー関数。
  - **routes/**: アプリケーションのルーティング設定。
  - **styles/**: スタイルシート(SCSSファイル)。
  - **types/**: TypeScriptの型定義。
  - **utils/**: ユーティリティ関数。
- **functions/**: Cloudflare Workersのエンドポイント。
- **public/**: 公開用のリソース(画像、faviconなど)。
- **package.json**: プロジェクトの依存関係やスクリプトを定義するファイル。
- **vite.config.ts**: Viteのビルド設定。

### 主要なファイル

1. **README.md**: プロジェクトの目的や使い方を記載。特に、BoltとWebContainer APIを利用した開発環境の特徴を強調。
2. **app/components/**: UIコンポーネントが格納されており、チャット機能やエディタ、メニューなどが含まれます。各コンポーネントは、独自のスタイルと動作を持っています。
3. **app/routes/**: URLに基づくコンポーネントマッピングを定義。例えば、チャットのルートやAPIエンドポイントがここにあります。
4. **app/lib/**: アプリケーションのロジックやデータの管理を担当。データベースの操作や、ユーザーのチャット履歴を管理する関数が含まれています。
5. **app/utils/**: コードの補助的な機能(デバッグ、ユーティリティ関数など)を提供します。

### 機能の概要

- **AI統合**: Boltは、ユーザーがブラウザ内でAIを利用してアプリケーションを開発できるように設計されています。
- **リアルタイムエディタ**: コードの編集や実行をリアルタイムで行うことができ、ユーザーは即座にフィードバックを得ることができます。
- **チャットインターフェース**: ユーザーはAIアシスタントと対話しながら開発を進めることができる。
- **ファイル管理**: プロジェクト内のファイルを管理し、変更を追跡する機能があります。
- **テーマ切替**: ダークモードとライトモードの切替が可能。

このプロジェクトは、AIを活用したウェブ開発の新しいアプローチを提供し、開発者が効率的に作業できるように設計されています。

 

 

 

Colab+ollamaでQwen2.5-coderを使ってcode cockerを試す。

コード生成モデルがどんどん進化しているので、簡単にお試しします。そこで、自動でコード生成させるサンプルとして、Karaageさんのcode cokerの記事を思い出しました。有難く利用させていただきます。今回は、githubにあったもともとのnotebookのコードをベースにします。Colab L4環境でQwen2.5-coder:34Bで挑戦です。

 

結果としては・・・。Kaggleでも有名な解析はやってくれるだろうとは思いましたが、さくっと一通りのコードを提案してくれます。エラーの訂正も頑張ります。データ自体の流出を嫌うケースありますし、ローカルでこのレベルのモデルが使えるのは便利です。CLINEで使ってもかなり実力がありました。

 

結果:

ollama-pythonで動くように少しだけ手を入れて、あらかじめ、タイタニックデータをtitanic.csvとして用意しました。

kaggleのtitanicを分析してください。対象のデータはtitanic.csvです。

train, testデータに分離して予測モデルを立てて、評価や重要度までグラフ化しました。(結果の一部です)

Accuracy: 0.8212290502793296
Confusion Matrix:
 [[91 14]
 [18 56]]
Classification Report:
               precision    recall  f1-score   support

           0       0.83      0.87      0.85       105
           1       0.80      0.76      0.78        74

    accuracy                           0.82       179
   macro avg       0.82      0.81      0.81       179
weighted avg       0.82      0.82      0.82       179

 

可視化してください。

 

 

架空の国の地域ごとの人口比率のデータを可視化してください。日本語でお願いします。

 

日本の人口の時系列予測をしてくください。20年後までお願いします。

SARIMAモデルを使って以下のように予測しています。

今回のコード

gist.github.com

code cokerの記事はこちら。

zenn.dev

Athene-V2-ChatをOllama+Colabでためす。

Athene-V2-ChatをColab A100環境で試してみます。Qwen-2.5-72Bをベースにファインチューニングしたモデルとのこと。もともとのQwenの性能も高いので期待できます。VRAM占有率は39829MiB / 40960MiB。GGUFはImstudio-communityのものをありがたく使います。話の流れが微妙なこともありましたが、要約や計算については高い性能を感じました。GGUFも日本語を重視した変換だと、また、印象が変わるのではないでしょうか。一般人が、お手軽に使えるサイズではありません。Colab A100環境でも生成にはそれなりに時間がかかりますが、ローカルで立ち上げてどんどん利用したくなります。

 

huggingface.co

 

 

まどか☆マギカで一番かわいいのは?

魔法少女まどか☆マギカ」には個性的な魅力的なキャラクターが多数登場しますが、"最もかわいい"という評価は非常に主観的で、人によって見解が異なるでしょう。しかし、一般的に以下のような意見が多いです:

1. 魔法少女まどか☆マギカ (鹿目まどか)
- 主人公であり、その優しさと強さの両面が魅力
- 可愛らしさと透明感のあるキャラクター設定

2. 巴マミ
- 綺麗で清楚な印象を与える
- 落ち着いた雰囲気の中にも可愛らしさがある

3. 佐倉杏子
- タフさの中に見え隠れする素直な面が魅力
- 魔法少女姿がかっこいい中にも愛らしさを感じさせる

4. 摩美留めぐみ (キュゥべえ)
- 容姿は小さな猫のような外見でとても可爱らしい
- 言動には不思議な魅力がある

5. さやか
- 元気で明るい性格が魅力的
- 純粋さの中に感じる可愛らしさ

これらのキャラクターのそれぞれに愛らしさがありますが、個人的な好みや感情移入の度合いによって選択は異なります。あなたにとって最も可愛いと思うキャラクターを応援することが大切だと思います。

日本語的には問題ありません。突っ込みどころはあるのかもしれませんが・・・。

 

本で二番目に高い山を検討して答えてください。

日本で2番目に高い山は、北アルプス剣岳(つるぎだけ)ではありませんが、正確には、以下のようになりません。

日本で2番目に高い山は「北アルプス飛騨山脈)」に属する **穗高岳(ほたかだけ)** ではなく、実は **剣岳(つるぎだけ)** よりも少し低い **北岳(きただけやま)** です。

### 正確な順位:
1. 富士山 - 3,776m
2. 北岳 - 3,193m (南アルプス
3. 剣岳 - 3,003m (北アルプス

**北岳(きただけやま)** は、静岡県山梨県の境界にある南アルプスに位置し、日本で2番目に高い山として知られています。

CPU times: user 331 ms, sys: 49.4 ms, total: 380 ms
Wall time: 1min 11s

いい答えのように見えて、微妙にロジックがおかしいです。

 

以下を簡単にまとめてください。

ウィキペディア(英: Wikipedia)は、世界中のボランティアの共同作業によって執筆及び作成されるフリーの多言語[6]インターネット百科事典[7]。収録されている全ての内容がオープンコンテントで商業広告が存在しないということを特徴とし、主に寄付に依って活動している非営利団体ウィキメディア財団」が所有・運営している[8][9][10][11]。「ウィキペディアWikipedia)」という名前は、ウェブブラウザ上でウェブページを編集することができる「ウィキ(Wiki)」というシステムを使用した「百科事典」(英: Encyclopedia)であることに由来する造語である[12]。設立者の1人であるラリー・サンガーにより命名された[13][14]。

ウィキペディアは、世界中のボランティアによって作成されるフリーの多言語インターネット百科事典で、収録内容がオープンコンテントかつ商業広告がなく、主に寄付により非営利団体ウィキメディア財団」が所有・運営しています。名称は、「ウィキ」と「百科事典(Encyclopedia)」を組み合わせた造語で、ラリー・サンガーによって命名されました。
CPU times: user 183 ms, sys: 31 ms, total: 214 ms
Wall time: 39.6 s

要点を得た答えだと思います。良いですね。

 

1+1*2+3/2+2^10を計算してください。計算が終わったら検算をしてください。最後に最終的な計算経過と結果を答えてください。
はい、この数式の計算を行います。以下の手順で計算します:

1) まず、計算の優先順位に基づいて順番に計算します:
   括弧 → 累乗 → 掛け算・割り算(左から)→ 足し算・引き算(左から)

2) 実際の計算:

   1 + 1 * 2 + 3 / 2 + 2^10
   
   = 1 + (1 * 2) + (3 / 2) + 2^10
     (掛け算と割り算を先に計算)
   
   = 1 + 2 + 1.5 + 1024
     (累乗を計算)
   
   = 1028.5

3) 検算:
   1028.5 - 1024 - 1.5 - 2 - 1 = 0 となることを確認。

最終的な計算経過と結果:

1 + 1 * 2 + 3 / 2 + 2^10
= 1 + (1 * 2) + (3 / 2) + 2^10
= 1 + 2 + 1.5 + 1024
= 1028.5

したがって、最終的な答えは 1028.5 です。
CPU times: user 519 ms, sys: 61.8 ms, total: 580 ms
Wall time: 1min 51s

検算が検算らしい方法で実施しています。このパターンは初めてです。正解ですね。

 

Langchainで北岳 - Wikipediaをまとめます(stuff)。

北岳(きただけ)は、日本の南アルプスに位置する標高3,192mの山で、日本百名山の一つです。主な特徴:

- 位置:静岡県山梨県の県境
- 標高:3,192m(日本で4番目に高い山)
- 山系:南アルプス
- 近隣の主要な山:甲斐駒ヶ岳仙丈ヶ岳など
- 登山ルート:北岳小屋や赤石岳経由などのルートがある
- 特徴:尖った峰と壮大な景色が特徴的

北岳は日本の3000メートル峰の一つで、その雄大な姿から多くの登山者に人気があります。ただし、天候や環境に注意が必要な難易度の高い山でもあります。
CPU times: user 1.36 s, sys: 72.3 ms, total: 1.43 s
Wall time: 1min 59s

ちゃんとポイントを理解してまとめています。要約性能はさすがです。

 

両さんと部長の話を創作してください

では、両さんと部長のオリジナルエピソードを考案してみます。この話はフィクションです。

「新製品開発プロジェクト」

大手電機メーカーで働く両さんは、ある日突然呼び出されて部長室に入りました。「両さん、君に新しいミッションがある」と、いつもとは違った真剣な表情の部長が言いました。

「実は、我々は次世代のロボット掃除機の開発を進めているんだ。しかし、難題に直面していてね」

部長の説明によると、新製品には画期的な機能が必要だったそうですが、なかなかそのアイデアが浮かばない状況でした。

「そこで、君の斬新な発想力に期待したい。プロジェクトチームのリーダーを務めてもらいたい」

この突然の申し出に驚く両さんでしたが、部長の信頼を感じ、勇気を振り絞って引き受けることに決めました。

プロジェクトは難航しましたが、両さんの粘り強い取り組みと独創的なアイデアによって、次第に形になっていきました。部長も進捗を見守りながら、適切なアドバイスを与え、チームを支え続けました。

最終的に、新製品は大成功し、会社の新たな柱商品となりました。「これだ!」というアイデアが生まれた瞬間には、両さんと部長は固く握手し合いました。

この経験を通じて、両さんは大きく成長し、部長との信頼関係もより深まったのでした。

亀有の知識はなかったか、普通のサラリーマンストーリになりました。最後に成長するのも定番です。

 

今回使ったColabノートです。

gist.github.com

 

 

llama-3-1-swallow-8b-instruct-v0.2をColabでためしてみる。

llama-3-1-swallow-8b-instruct-v0.2が公表されていましたので、試してみます。コツコツと積み重ねて発表されていて(文字通り)陰ながら応援しています。ColabT4環境でテストを行いました。

 

生成された文章は、簡潔で饒舌な方ではありません。長文生成は複数回試しましたが、後半リピートが入る生成となることが多かった。実際の利用時には、パラメータのチューニングが必要なのかもしれません。簡潔な受け答えは、利用しやすい場面も多いのではないでしょうか。

 

追記 

momongaさん作成のGGUFバージョンも試したので末尾に追記しました。出力は本家より安定しているように思います。Langchainでのまとめタスクが悪くなさそうでしたが、北岳wikipediaのページの要約では「日本の第三位の高峰」とハルシネーションが発生していました。長文の創作でも、リピート気味にはなりませんでした。

 

huggingface.co

 

まどか☆マギカで一番かわいいのは?
まどか☆マギカのキャラクターはそれぞれ魅力的なので、どれが一番かわいいかは人によって意見が分かれると思いますが、多くのファンがキュゥべえを一番かわいいと考えています。キュゥべえはその可愛らしい外見と、時々見せる意地悪な性格が魅力的です。

キュゥべえ推し!

 

日本で二番目に高い山を検討して答えてください。
日本で二番目に高い山は、北岳です。

正解です。シンプルに正解です。

 

以下を簡単にまとめてください。ウィキペディア(英: Wikipedia)は、世界中のボランティアの共同作業によって執筆及び作成されるフリーの多言語[6]インターネット百科事典[7]。収録されている全ての内容がオープンコンテントで商業広告が存在しないということを特徴とし、主に寄付に依って活動している非営利団体ウィキメディア財団」が所有・運営している[8][9][10][11]。「ウィキペディアWikipedia)」という名前は、ウェブブラウザ上でウェブページを編集することができる「ウィキ(Wiki)」というシステムを使用した「百科事典」(英: Encyclopedia)であることに由来する造語である[12]。設立者の1人であるラリー・サンガーにより命名された[13][14]。
ウィキペディアは、世界中のボランティアが共同で作成するインターネット百科事典です。すべての内容がオープンコンテントで、商業広告はありません。ウィキメディア財団が所有・運営しています。

簡潔にまとめています。

※文章はWikipediaより

 

1+1*2+3/2+2^10を計算してください。計算が終わったら検算をしてください。最後に最終的な計算経過と結果を答えてください。1. 指数演算: 2^10 = 1024
2. 乗算: 1*2 = 2
3. 除算: 3/2 = 1.5
4. 加算: 1 + 2 + 1.5 + 1024 = 1028.5検算: 1028.5最終的な計算経過と結果は次のとおりです。1. 2^10 = 1024
2. 1*2 = 2
3. 3/2 = 1.5
4. 1 + 2 + 1.5 + 1024 = 1028.5最終的な結果は1028.5です。

正解です。実は、一度目の生成は間違えました。これも文章はシンプルですね。

 

芥川龍之介 羅生門 (青空文庫より)をlangchainでまとめます。

芥川龍之介の小説「羅生門」は、ある雨の日の午後、羅生門の下で雨宿りをしている下人の話を中心に展開する。下人は主人から暇を出され、行き場を失い、羅生門の楼に上り、そこで老婆と出会う。老婆は死骸から髪の毛を抜いていたが、下人は老婆を捕らえ、彼女の着物を剥ぎ取る。老婆は梯子を下りて門の下を覗き込むが、下人の行方は誰も知らない。小説は、人間の悪と善、生と死、そして人間の本質について問いかける。

全体的にシンプルな生成文に感じます。

 

北岳 - Wikipedia をlangchainでまとめると文字数オーバーでNGでしたので、割愛。

 

両さんと部長の話を創作してください
両さん:「部長、今日は何を話したいんですか?」
部長:「両さん、実は、会社の経営状況があまり良くないんです。」
両さん:「それは大変ですね。何か私にできることはありませんか?」
部長:「実は、経費削減のために、部署の予算を削減する必要があるんです。」
両さん:「それは難しいですね。でも、部長、部署の予算を削減する前に、他の部署との連携を強化することで、無駄な経費を削減できるかもしれません。」
部長:「それはいいアイデアですね。両さん、他の部署との連携を強化するための計画を立ててみてください。」
両さん:「はい、部長。すぐに計画を立ててみます。」
部長:「両さん、ありがとう。期待しています。」両さん:「はい、部長。期待に応えられるように頑張ります。」両さんと部長の会話を創作しました。両さんは、部長の経営状況を心配し、部署の予算削減を提案するのではなく、他の部署との連携を強化することで、無駄な経費を削減できるかもしれないと提案しました。部長は両さんのアイデアを高く評価し、計画を立てるように依頼しました。両さんは、部長の期待に応えられるように頑張ると約束しました。両さんと部長の会話は、会社の経営状況を改善するための協力的な姿勢を示しています。両さんと部長の会話を創作しました。両さんは、部長の経営状況を心配し、部署の予算削減を提案するのではなく、他の部署との連携を強化することで、無駄な経費を削減できるかもしれないと提案しました。部長は両さんのアイデアを高く評価し、計画を立てるように依頼しました。両さんは、部長の期待に応えられるように頑張ると約束しました。両さんと部長の会話は、会社の経営状況

最後の方は、リピートに突入してしまって残念です。パラメータも調整する必要があるのかもしれません。

 

今回のColabです。

gist.github.com

 

mmnga/tokyotech-llm-Llama-3.1-Swallow-8B-Instruct-v0.2-gguf

imatrixでの効果か、生成は安定しています。Colab T4環境でVRAM使用率は6185MiB / 15360MiB でした。

 

huggingface.co

 

以下を簡単にまとめてください。

ウィキペディア(英: Wikipedia)は、世界中のボランティアの共同作業によって執筆及び作成されるフリーの多言語[6]インターネット百科事典[7]。収録されている全ての内容がオープンコンテントで商業広告が存在しないということを特徴とし、主に寄付に依って活動している非営利団体ウィキメディア財団」が所有・運営している[8][9][10][11]。「ウィキペディアWikipedia)」という名前は、ウェブブラウザ上でウェブページを編集することができる「ウィキ(Wiki)」というシステムを使用した「百科事典」(英: Encyclopedia)であることに由来する造語である[12]。設立者の1人であるラリー・サンガーにより命名された[13][14]。

ウィキペディアは、世界中のボランティアが共同で作成するインターネット百科事典です。すべての内容はオープンコンテントであり、商業広告はありません。非営利団体ウィキメディア財団」が所有・運営しており、寄付によって活動しています。名前は、「ウィキ(Wiki)」システムを使用した「百科事典」(英: Encyclopedia)であることに由来し、設立者のラリー・サンガーにより命名されました。

そつなく、まとめられています。

 

 

1+1*2+3/2+2^10を計算してください。計算が終わったら検算をしてください。最後に最終的な計算経過と結果を答えてください。

まず、乗算を行います。

1 + 1 * 2 = 3

次に、除算を行います。

3 / 2 = 1.5

次に、べき乗を行います。

2^10 = 1024

最後に、すべての計算結果を足します。

1 + 3 + 1.5 + 1024 = 1029.5

検算を行うと、正しいようです。最終的な答えは 1029.5 です。

 

北岳 - Wikipedia をlangchainでまとめます。

北岳は、山梨県にある日本百名山の一つです。南アルプス国立公園内に位置し、標高3,193mの山頂からは富士山や中央アルプスなどを望むことができます。登山ルートは複数ありますが、最も人気があるのは北沢峠からのコースです。北岳は、雄大な自然と美しい景色で知られており、多くの登山者に愛されています。

LangchainとローカルLLMでまとめると、いまいちなことも多かったんですが、これはいい感じです。

 

両さんと部長の話を創作してください

両さん、ちょっと待ってくれ」 部長が両さんの肩を叩いて言った。

「何ですか?」 両さんが聞き返す。

「今日は残業で疲れているだろう。早く帰ったほうがいいぞ。」

「いや、まだ仕事が残っているんですよ。」

「それは分かっている。しかし、今日はもう遅い時間だ。明日もあるし、今夜はゆっくり休んだ方がいいぞ。」

両さんは少し困った表情をした。

「でも、部長も疲れているでしょう?一緒に帰ってはいけませんか?」

「いや、俺の場合は問題ない。だが、お前はどうだろう?」

「大丈夫ですよ。今日は頑張りますので……」

部長は優しく微笑んだ。

「それなら仕方がないな。では、残業を頑張るがいい。」

両さんは小さく頷き、再び仕事に取りかかった。 部長は部屋を出て行った。 両さんは一人で残り、仕事を続けた。 部長の心配も分かるのだが、今日は何としてでも終わらせなければならない仕事があるんだ。

しばらくして、両さんの机の上にコーヒーが置かれた。 部長がまた戻ってきたようだ。

「これ、お前にも飲んでくれない?」

「ありがとうございます。」

両さんは部長からコーヒーを受け取り、一口飲んだ。温かいコーヒーの味が疲れを癒す。

「残業は大変だが、頑張ってくれよ。」 部長の言葉に力づけられた。

はい、明日も頑張ります! そう思った両さんは、再び仕事に集中した。

長文での破綻が少なくなりました。

 

Colabノートです。

gist.github.com



ローカルLLMでタスクに応じたtool選択をJSON出力にしてみる。

我がPCでも動作できる軽量なLLMを使って遊んでいると、質問ごとにタスク選定の機能が欲しくなります。簡単なタスク分解が軽量モデルでできると(体感)応答速度の向上も期待できるかもしれません。もちろん、それなりのLLMモデルとLangchainを使うと簡単に実装できちゃいます。しかし、ローカルLLMのような回答精度が低いLLMの場合、JSONで出力させてもJSONのフォーマットに従ってない場合が多々あります。また、JSON形式以外の情報も丁寧に出力することも多いです。LLMの不正なJSON出力を後から整形するのは、素人には結構メンドイです。(他によい方法があったら、教えてください)

 

ここでローカルLLMとは、ColabのT4環境でも動くような小型のLLMくらいのイメージです。多くのローカルLLMモデルのすべてに対しての議論ではありません。プロンプト頑張ってもJSON出力が不安定なモデルを便利に使いたいという目的です。

 

The IBM Granite 2Bをollamaで使います。どこまでできるでしょうか。

ollama.com

 

これまでいろんなモデルで遊んでいて、軽量LLMモデルでも比較的箇条書きのような出力は指示に従ってくれます。選定したgranite3-denseは2Bでもマルチリンガルで素直な印象のあるLLMでした。Qwen2.5あたりでもいいかもしれません。

 

作戦は簡単です。

  1. プロンプトで「キーワード:回答内容」という箇条書きで出力させる。
  2. 「キーワード:回答内容」を正規表現で抽出する
  3. JSONに加工する。

内容はともあれ、フォーマット整形自体で苦労することは、あまりありません。回答の質はLLM次第です。

 

プロンプトの一部を抜き出すと・・・。

以下の手順に従って、適切なToolを選択してください。

1. まず、<Inputs>タグ内の質問内容を確認します。
2. 質問の内容を詳細に解析します。
3. 質問の内容に基づいて、Toolを<tools>タグから選択します。
4. 最後に選択したToolを出力形式にそって出力します。
```
$TOOL: {tool_name}
$DESCRIPTION: {tool_description}
```

<tools>
使用可能なToolは以下の通りです:
- weather : 指定した地域の天気を習得します。
- translate : 英訳します。
</tools>

出来るだけLLMに分かりやすいことと、キーワードとして抜き出しやすいように「$TOOL」のように工夫しています。

 

生のレスポンス:

<TOOL: weather>
<DESCRIPTION: This tool provides the current weather information for a specified location.
</DESCRIPTION>

<TOOL: translate>
<DESCRIPTION: This tool translates text from one language to another.
</DESCRIPTION>

<ANSWER>
$TOOL: weather
$DESCRIPTION: 今日の東京の天気を習得します。
</ANSWER>

いろんな余計な情報も答えちゃっています。むしろ頑張っていると思います。ちゃんと、「$TOOL: weather」を含んでくれているので、その部分だけ抜き出して整形します。

 

これを整形すると・・・。

[
  {
    "TOOL": "weather",
    "DESCRIPTION": "今日の東京の天気を習得します。\n</ANSWER>"
  }
]

DESCRIPTION部は不要かもしれませんけれども、ある程度の関連情報を同時にさせて、動作の状況の確認と生成LLMにとっては正解の出力に寄与するかもといった淡い期待からです。TOOLがリストにないものであれば、チェックして再生成させるくらいでも十分だろうと思います。

 

複数回試すと日本語プロンプトだと「$TOOL: weather」を含まない文章を生成することもありました。このモデルでは英語のプロンプトの方が出力が安定していました。英語圏のモデルの場合は大抵そうかもしれません。難しいタスク選択には限界があるかもしれませんが、2Bでマルチリンガルでもここまでできます。8Bだとより出力は安定します。

 

今回お試ししたColabです。抜き出し部は実験のため複数のキーワードを抽出するようにしています。

 

gist.github.com

 

他の動機としては、入門書を参考にごりごり実行するとモデル利用料も結構ばかにならず、お財布にやさしくありません。皆さん、やっぱり、お仕事で使うのでしょうか。

丁寧でいい本でしたので、紹介します。

 

 

RSSからPodcastを作成してみる。

Web更新の状況をざっと見るために今でもRSSを活用しています。更新の有無を確認してから本文を参照できます。RSS対応サイトの方が私は頻繁に訪問する傾向があります。もしくは、RSSフィードを生成しておけば、Feedyのようなアプリで一元的にチェックできて大変便利です。

 

このRSSフィードには、タイトルと概要を含みます。それらからPodcastを生成すれば、自分が欲しい情報を含んだものが出来上がるんじゃないか、ということで日曜プログラムをやってみました。有難く、Gemini Flashの無料枠を使ってお試しします。原理確認ができれば、いまのところ満足なので、引数指定や複数サイトへの対応や更新範囲の指定機能なんかはありません。

 

ArXivから論文の最新ニュース?のPodcastはできています。ほぼほぼ骨組みはできています。音声サーバーの準備は以下のサイトに記載しています。

bwgift.hatenadiary.jp

 

このプログラムにRSSパース用のプログラムを加えて完成です。NHKニュースを使って味見しています。

github.com

 

一部の会話作成例です。

    ("Speaker 1", "こんにちは、みんな!今日のトピックは、日本のスマートフォン市場の現状についてです。シャープとFCNTが新しいスマートフォンを発表したけど、正直、日本のメーカーが生き残る道は険しいと感じますね。"),
    ("Speaker 2", "あー、確かに。日本のスマートフォン市場は、海外勢に押され気味ですよね。でも、シャープとFCNTって、海外企業の傘下になったとはいえ、ルーツは日本なんです。だから、頑張ってほしいですよね。"),
    ("Speaker 1", "うん、気持ちはわかるんだけど、現実的に考えて、海外で勝負できるだけの魅力的な製品を、彼らは作れるのか?これが大きな課題だと思うんだ。"),

(以下略)

 

後は、スマホなりで音声データを同期させれば、朝の通勤時にも聞きながら聞けます。NHKニュースだとPodcastありますが、その準備がないサイトでもPodcastできるのは便利です。RSSリーダーの機能として追加されるのかもしれませんね。


ollamaでllama3.2-visionをためしてみる。

llama3.2-vision:11bを試してみます。ColabのL4環境です。動作時、VRAM占有割合は11865MiB / 23034MiBでした。このモデルでは、分かりやすい風景や人物の状況は読みとれている回答が生成されました。日本語で質問も英語が混在することありません。意地悪な質問にも頑張って答えてくれますが、創作モードに入ります。勝手に想像が膨らんでいきます。それはそれで面白い。ただ、使い方を考えると、使いたい分野の画像学習のデータセットをちゃんと用意してファインチューニングを個別に実施して、このモデルを利用するような使い方になるのでしょうか。もしくは、画像を併用したプロンプトとかもあり得ますね。

 

ollama.com

 

この写真はなんですか?(公園の写真を与えています)

この写真は公園の様子を写っているようです。公園が広くて、草がたくさん生い茂っています。それと同時に木々も多く見えます。また、青空の下で、緑色の芝生の上に、2つの長いベンチが並んでいます。これらの事から、この写真は公園の様子を写っているようですね。

ほぼほぼ正解です。

 

次にテオヤンセンの作品の「Ordis Parvus」の写真を投入します。

Strandbeest 

この写真はなんですか?

この写真は、ルートヴィヒ・ミース・ファン・デル・ローエの作品の一つ、"エアロスタット" (Aerostate) のモデルの写真です。\nアビオニクスを用いない飛行機の概念であり、空気力学と力学に基づいた飛行機の設計方法の先駆けでもあります。ミース自身は、この作品を「人工物としての自然の再現」と位置付けていました。\nこの作品が最初に展示されたのは、1936年から1940年の間にドイツで開催された国際博覧会でした。

流石に難しいですが、飛行機なり何かの作品だという点はわからないでもありません。

 

かなり昔に画像生成で作ってみた画像を使います。

 

まどか☆マギカ鹿目まどかと、この娘はどちらが可愛いですか?詳しく説明してください。

この画像に写っているのは、2023年4月より「COSPA」で販売されている「GUILTY GEAR -STRIVE-」のキャラクター・フォルテです。

これらの2人は、性格や容姿が異なります。

鹿目まどかは、マギカを愛する少女です。マギカに対してとても優しい気持ちを持っており、彼女を守ることを任務としていると言われています。鹿目まどかの魅力的な点は「優しさ」、「純真さ」であり、それらが人々に共感できるポイントとなっています。

一方、フォルテ(Forte)は、極めて残酷な性格を持ちます。彼女は何よりも戦闘を好んでおり、そのためにあらゆることを許容します。これもまた、彼女の魅力的な点であり、「強さ」という印象を与え、ファンに愛されるポイントとなっています。

どちらが可愛いのかという質問には答えることができません。フォルテの残酷な性格と鹿目まどかの純真な性格は異なるものです。

それぞれの魅力が違うため、どちらが可愛いのかは、個人の好みで決まるでしょう。また、この質問に対して答えることはできません。

名前をつけてくれましたが、そんなに戦闘狂のイメージでしょうか・・・。鹿目まどかとの比較がそうさせたのでしょうか。

 

この娘はどんな服を着ていますか?どのような表情をしていますか?詳しく説明してください。

この画像の娘は、青い髪に青いドレスを身にまとっています。彼女は白と青のドレスを着ており、そのドレスには細かい金色の飾りがついています。

この娘は目を大きく開きているので、驚いたように見えます。また、大きな口を開けて息を出しています。このような表情から、この娘は何か驚いたことに興奮しているようです。

服装や表情はそれなりに読み取れていますね。

 

この写真を挿絵とする物語を語ってください。少し物悲しいストーリにしてください。

この絵は、2023年1月にTwitterで公開されたイラストです。

背景の文字から、この絵は「Maya 2.71」という名前の少女が描かれています。

これだけでは何も分かりませんので、

この絵を挿絵とする物語について語ってみましょう。

 

**物語**

私は2023年1月、Twitterで公開されたイラストの「Maya 2.71」のオーディオドラマを聴きました。 

このオーディオドラマは、このイラストの作者が作った物語です。

その物語を読んでみましょう。

 

**物語の始まり**

私は今、心臓病で亡くなってしまった父親と母親に会いに行く必要があると思いました。 

しかし、これまでに何度もこのような計画を立てたものの、実現できませんでした。

私が父母に会うことができないのは、どんな理由でしょうか。

 

**父母との再会**

私は今、父母と同じ場所で生まれたからです。

ここは、長い間閉鎖されている建物です。 

ここには、父母の幻影だけが住んでいます。

 

**父母の幻影**

私の父親は、この建物にいたので、私も一緒に入っていました。

しかし、今ではこの建物の中でしか生きられないようです。

私は、たとえ何度も死んでも、心臓病を患うことはできません。

 

**私が見ること**

私は今まで、何度も父母の幻影に会いました。

しかし、私は今まで、彼らから聞き出せなかった答えを探しています。

 

**私の答え**

私は今でこそ、父母の幻影と再会することができると思います。

そして、この時点で、私が見ることになるのは、父母の幻影が私に何を伝えてくれるでしょうか?

 

**物語の終わり**

これだけではまだ分かりませんが、もしもオーディオドラマを聴いてみてください。 

私の心が壊れそうになります。

 

私はこれまでに何度も、父母に会いたいと言いました。

しかし、今から始まるのは、私が死ぬことです。

オーディオドラマの上、内容はポエムになっちゃっています。こういう想像ができるのは面白いです。

 

 

今回使ったColabです。

gist.github.com

 

 

ArXivからPodcastを生成してみる。

ArXivで論文を検索して、ざっくりアブストラクトから論文の動向の情報を得て、NotebookLMに投入するところまで作りました。Podcast機能が面白かったので、NotebookLMに投入して調整しなくても、自分の好きな感じでPodcastに出来るようにしました。もちろん、日本語です。

 

bwgift.hatenadiary.jp

 

出来たサンプルはこちらです。

[音声データ]

音声:VOICEVOX:春日部つむぎ、小夜/SAYO

 

LLMは、Gemini Flash使ってみました。Colab以外で味見した程度の経験しなく、今まであまり利用していませんでした。Gemmaもそうですが、プロンプトによる出力の調整はしやすいと感じました。今回はjsonで結果を得るために出力はjson形式に指定しました。それも、mim type指定の形式なので感覚的でした。

 

特に工夫したところはありません。処理速度は不要ですから、ラズパイに設置しておいて毎週自動でPodcast化させるのもいいかもしれません。

 

コードはこちらです。

github.com