いつでもどこで文書生成AI

やりたいと思うことをネットで探すと誰かが既にやっているということが多いです。

ZIKUUではアプリケーションサーバー(Core i5 13400搭載、外部GPU非搭載)でDockerを活用し、Ollamaを動作させています。私のPCからはVPN経由でこのサーバーにアクセスできるようにしており、塾にいないときでも、Open WebUIやDify(これらも同サーバーでDockerでデプロイしてある)を利用することで文書生成AIが使えるようになっています。

数日前の投稿でコマンドラインから生成AIを使うと便利だよという話を書きました。

ここでは、サーバーで稼働しているOllamaを利用して、いつでもどこでコマンドラインから生成AIで文書生成する方法を紹介します。

前提条件

  • ネットワークアクセス可能などこかのマシンでOllamaが動いていること
  • Rustがインストールされていること

筆者の環境

  • Ubuntu Server 22.04 LTS上でDockerを使用して最新版のOllamaを動かしている
  • Ollamaにはgemma2:2b-instruct-q4_K_Mがモデルとして設定されている
  • ローカルPCはLinux Mintの最新版とRustの最新版がインストールされている
  • VPNでローカルPCから塾のUbuntu Serverにアクセスできる

プログラムの取得

Githubからこのリポジトリーをクローンするかダウンロードして解凍します。

https://github.com/pointerliu/ask-rs

このプロジェクトはターミナル画面で入力したプロンプトをOllamaに送り、生成された文章を画面に表示するものです。

プログラムの動作環境の変更

ask-rsプロジェクトディレクトリに移動します。

$ cd ask-rs
$ ls

Cargo.lock
Cargo.toml
LICENSE
README.md
src
target

次に 設定情報が書かれているsrc/config.rsを編集します。

$ nvim src/config.rs

編集箇所は14行目と16行目で、hostとmodelを自分の環境に合わせて変更します。

impl Default for Ollama {
    fn default() -> Self {
        Self {
            host: "ollamaが動いているマシンのホスト名かIPアドレス".to_owned(),
            port: 11434,
            model: "使用する言語モデル".to_owned(),
        }
    }
}

オリジナルのソースコードはローカルPCでOllamaが動いているという前提で書かれたものです。サーバーを使用しない方は同リポジトリのREADME通りに作業すればできます。

プログラムのコンパイルとインストール

プロジェクトディレクトリに移動して、コンパイル・インストールします。

$ cd ask-rs
$ cargo install --path .

実行

ターミナルから、例えば次のようにコマンドを実行すると、

$ ask-rs "地域おこしを成功されるために必要なことを、なるべく詳しく日本語で書いてください"

Ollamaのサーバーで生成された文章を表示します。(Markdown形式の文章が生成されたので、それをそのままWordpressに貼り付けるとこのようになります。)

地域の魅力を最大限に活かし、地域おこしを成功させるためのステップ

地域おこしは、地域の魅力を広く世の中に伝えることで、人々の関心を集め、地域活性化を実現するための、非常に重要な取り組みです。単に「地域を盛り上げる」のではなく、具体的な目標設定と戦略的な施策の組み合わせが成功のカギとなります。以下に、地域おこしを成功させるために必要な要素を詳しく解説します。

1. 地域の魅力分析とターゲット設定:

  • 現状把握: まずは現在の地域状況を深く理解する必要があります。人口減少、高齢化、経済活性化など、具体的な課題や強みを分析しましょう。
  • ターゲット設定: 誰に何を伝えたいのか、明確なターゲット層を設定することが重要です。 例えば、若い世代、観光客、起業家、移住者など、それぞれのニーズに合わせてアプローチする必要があります。
  • 競合分析: 競合地域や業界の現状と競争力のある特徴を分析し、差別化戦略を練りましょう。

2. 具体的な施策の企画と実行:

  • 観光資源の活性化: 地域の魅力を高めるために、観光資源の開発と活用が重要です。例えば、自然、歴史、文化、グルメ、アクティビティなど、地域の特徴を生かした観光コンテンツを企画しましょう。
  • 人材育成と雇用創出: 地域の活性化には、人材育成と雇用創出が必要です。地域産業の発展や起業を支援するプログラム、インターンシップ制度、教育機会の拡充などの施策を検討しましょう。
  • 地域コミュニティの活性化: 地域住民とのコミュニケーションを強化することで、地域全体が一体となって活動できる環境を構築します。イベント企画、ボランティア活動、地域交流会など、積極的に地域コミュニティを活性化させる取り組みを展開しましょう。

3. 広報とマーケティング:

  • オンライン広報: ウェブサイトやSNSを活用し、地域の魅力を発信しましょう。写真、動画、グルメ情報、イベント情報を発信することで、より多くの人々に情報を届けることができます。
  • オフライン広報: 地域の新聞や雑誌、ポスターなど、地域に根差した広報活動も効果的です。地元のイベントや観光地を積極的に宣伝することで、地域の魅力を発信しましょう。
  • ターゲット層に合わせたマーケティング戦略: ターゲット層に合った情報を発信する必要があります。例えば、若年層向けには、SNSやオンライン広告で積極的に情報発信しましょう。

4. 地域資源を活用した取り組み:

  • 地元産品を支援: 地域特産品を積極的に発信することで、地域経済の活性化につなげましょう。
  • 地域企業との連携: 地域の企業と協力し、地域の魅力を高めるイベントやサービスを企画しましょう。
  • 地域資源の活用: 地域の自然や文化遺産を活用した観光案内やイベント企画など、地域資源を効果的に活用しましょう。

5. 地域貢献と持続可能な発展:

  • 地域社会への貢献: 地域の課題解決に積極的に貢献することで、地域社会との連携を強化し、地域の魅力を高めます。
  • 持続可能な発展: 環境問題や社会問題に対応する取り組みも重要です。持続可能な地域開発を目指し、地域社会と連携した事業展開を図りましょう。

6. 継続的な評価と改善:

  • データ分析: 地域おこし活動の成果を定期的に分析し、データに基づいた改善策を検討しましょう。
  • フィードバック: 地域の意見を反映させ、地域コミュニティとのコミュニケーションを強化しましょう。

地域おこしは、単に「何かをやる」というだけでなく、継続的な取り組みと地域住民の理解と協力が必要です。

具体的な事例:

  • 観光地への投資: 観光客誘致のために、施設の近代化や観光案内の充実など、投資を積極的に行いましょう。
  • 農産物ブランド化: 地域の農産物をブランド化し、独自性を持たせることで、より高い価格で販売できる可能性があります。

地域おこしは、地域の魅力を最大限に引き出すための長期的な取り組みであり、成功には継続的な努力と柔軟性が必要となります。

私の環境では、xclipなどのクリップボードの内容をコピーできるコマンドがインストールされていて、コピーするコマンドをaliasでxcopyに設定しているので、以下のように、生成された出力をパイプでコピーコマンドに渡すことで、すぐに他のアプリケーションで利用できます。

$ ask-rs "地域おこしを成功されるために必要なことを、なるべく詳しく日本語で書いてください" | xcopy

前提条件が満たされた環境であれば、数分で作業は完了します。

簡単でしょ?

最後に

外部GPU非搭載サーバーの場合、上記コマンドの実行時間には21秒かかりました。同じことを安価なRTX 3060搭載機でやると4秒くらいです。もう少し速いGPUを使えば2秒程度で応答すると思います。

エンジニアやプログラマーであれば、なるべく思考に頭を使いたいはずです。いつでもどこでも、ターミナル画面から離れずに、文書生成AIが使えるのは思考を止めない良い方法だと思いますし、生成AIに道具感が出ると思います。

どこかの会社が「For the rest of us」という標語を掲げていた時期がありました。「自分たちはコンピューターのことが良くわかっているけど、それ以外の人は良くわからないので、操作の簡単なコンピューターを作るんだ」という意味だったと思いますが、ちょっと傲慢な感じがして好きになれませんでしたし、その頃は大したものを作っていませんでした。

我々エンジニアは、自己満足したり威張るためではなく、社会を前進させるために努力するのが使命であり存在価値です。いずれ外部GPU搭載のサーバーをいくつか設置し、コマンドラインやDiscordなどから生成AIを利用できるようにして、塾生やDiscordコミュニティーのみんなが生成AIを活用できる環境を整備していきたいと考えていますし、そのようなことを行うためのノウハウも塾生のみんなと共有して、みんなで前進したいと思います。

おまけ

生成AIの言語モデルは過去の知識を集めたものですから、新しいことを考えるのが苦手です。上記の地域おこしについても、過去の方策の寄せ集めみたいなものです。そういう特性をよく理解して使うものです。

地域の衰退というのは、その衰退を招いた考え方の枠組み、その枠組み作った人々にも原因があるわけで、過去の知識を寄せ集めて、今までと同じ人たちが今までと同じ考えの延長で考えても解決には至らないことが多いですし、仲間内の自己満足に終始すれば、衰退を加速させる危険すらあります。上手く行かないときは、考え方の枠組みを変えることが重要ですが、人というのはなかなか考え方を変えることができません。世代が変わって考え方の違う人たちが牽引するか、考え方の違う人たちが他所から来て牽引するといったことをするのが良いのですが、「若いもんには任せられない」とか「余所者にはやらせたくない」なんていう抵抗があるものです。そして余程のことがない限り人は反省をしません。あまり感情的にならず、柔軟に物事を考えるようにしたいものです。

コメントする