Gemini-proを使って簡単なチャットボットを作ってみよう!

生成AIがどんどん進化していく中でGoogleが新たなモデルを出しました。それが"Gemini-pro"です。 ちなみにこちらのページの下の画像リンクからGeminiが搭載されたBardを使うことができます。 チャットボットを作るにはAPIが必要なのでまずはAPIキーを取得します。キーはこちらから取得できます。画像の"Get API key in Google AI Studio"のリンクをクリックします。 ページが移動したら"Get API key"タブから"Create API key in new project"をクリックすればAPIキーを取得することができます。これでチャットボットの準備ができました。 次にGoogle Colaboratoryを起動します。APIキーの設定とモデルの取得と機械学習webアプリケーションを設定するだけで使うことができます。今回は"Gradio"を使うことにします。他のアプリもありますが、いつか使ってみたいですね。 コードは以下のように設定します。“YOU’RE_APIKEY"に取得したAPIキーを入れてください。 !pip install gradio import gradio as gr import google.generativeai as genai # APIキーの設定 GOOGLE_API_KEY = “YOU’RE_APIKEY” genai.configure(api_key=GOOGLE_API_KEY) # Generative AIモデルの初期化 model = genai.GenerativeModel(“gemini-pro”) # チャットボットの動作を定義 def chatbot(prompt): # Generative AIモデルを使用して推論を実行 response = model.generate_content(prompt) return response.text # Gradio UIの設定 iface = gr.Interface( fn=chatbot, inputs=gr.Textbox(type=“text”, placeholder=“Press Enter to Submit”), outputs=“text”, live=True ) ...

2024年1月22日

生成AIでプロンプトを使うときに大切な26項目

2023年12月16日にプロンプトを使うときに最適な支持を出す「26の指針」が発表されました。 こちらから確認できます。対象のモデルはLLaMA-1/2とGPT-3.5/4が対象になります。 その指示の効果などはこちらのGithubで確認することができます。そして指示については以下の項目になります。 LLM使用時のコミュニケーション: 礼儀的なフレーズ(「お願いします」「もしよろしければ」「ありがとう」)は不要。直接的な言葉遣いをする。 対象者の明示: 「専門家向け」といった対象者をプロンプトに含める。 複雑なタスクの分解: 難しいタスクは、簡単なプロンプトの連続に分けて実行する。 肯定的な指示: 「~する」という肯定的な指示を使用し、「~しない」という否定的な表現を避ける。 明確化と理解の促進: 特定のトピックを簡単な言葉で説明する。11歳の子供に説明するようにする。初心者向けの説明を行う。エッセイ/テキスト/パラグラフを5歳児に説明するように簡略化する。 報酬の提示: 「より良い解決策にはxxxドルのチップを払う」と報酬を明示する。 例題主導型のプロンプト: 数例に基づくプロンプトを使用する。 プロンプトのフォーマット: 「###Instruction###」で指示を開始する。必要に応じて「###Example###」や「###Question###」を追加する。指示、例、質問、文脈、入力データを区別するために改行を使用する。 指示的なフレーズの使用: 「あなたのタスクは」「あなたは必ず」といったフレーズを含める。 ペナルティの提示: 「あなたはペナルティを受ける」というフレーズをプロンプトに組み込む。 自然な回答の促進: 「自然で人間らしい方法で質問に答える」というフレーズを使用する。 ステップ・バイ・ステップの考慮: 導入的なフレーズとして「ステップ・バイ・ステップ考える」を使用する。 バイアスのチェック: 「あなたの回答にバイアスがかかっていないか、固定観念によるものではないかを確認してください」というフレーズを追加する。 情報の精密化: AIモデルが必要な情報を得るまで、ユーザーに繰り返し質問するよう指示する。 理解度のテスト: 特定のトピックやアイデアについて尋ね、ユーザー自身の理解度をテストする。 モデルへの役割割り当て: モデルに特定の役割を割り当てる。 区切り文字の使用: 区切り文字を使用する。 単語やフレーズの繰り返し: プロンプト内で特定の単語やフレーズを複数回繰り返す。 思考の連鎖と例示: CoT(Chain-of-Thought)と例示を組み合わせる。 出力プライマーの使用: 望ましい応答の開始部分でプロンプトを終了する。 詳細な記述の要求: 必要な情報を提供し、[トピック]について詳細な[エッセイ/テキスト/段落]を書くよう指示する。 文体の維持における修正: ユーザーの送信したすべての段落を見直し、文法や語彙を改善するよう指示するが、文体を変えない。 複雑なコーディングプロンプト: 複数のファイルにまたがるコードを生成する際に、指定されたファイルを自動的に作成するよう指示する。 一貫性のあるテキスト生成: ユーザーが提供する出発点から、LLMが一貫性を持ってテキストを生成するよう促進する。 生成要件の明示: モデルがコンテンツを生成するために従うべき要件を、キーワード、規制、ヒント、または指示の形で明確に示す。 サンプルに基づくテキスト作成: 提供されたサンプルに似たエッセイや段落などのテキストを書くよう指示する。 ただ、英語での調査でモデルも一部だけなので参考程度で考えたほうがいいかなという気はします。日本語でやる場合は、他の方法などもあるかもしれないですね。

2024年1月18日

E資格まで後1ヵ月なので頑張ろう!

さて約1ヵ月後にE資格が迫ってきました。そろそろ本気で取り掛からないとなと感じています。 せっかくなので受ける経緯とどう勉強したかを書いてみようかと思います。 そもそも私はG検定を受けていました。それが1年前ですが転職を考えたときに実務の部分が薄く感じたので資格で補強しようと考えました。 無事G検定は2023年3月頃に合格しました。その直後ですが、とあるメールが届きました。E資格の資格を受ける料金が割引されるという内容でした。 ちなみにE資格は割とお金がかかるものになってます。会社によっては何十万とかかったりします。もちろん国の補助金で安くなったりする場合もありますが、それでも10万以上かかるのが普通です。 ちなみに私はStudy-AIという企業様のe-ラーニングを受けていました。入会料金が3万で月々3千円くらいです。かつ、受験料が3万ぐらいなので最短だと合計7万5千くらいになると思います。これが企業の講習では最安かと思います。大学の講義を受けるなら別かもしれませんが… 私が受験資格を得たStudy-AIという企業様の講習内容ですがざっくり以下になります。 応用数学 機械学習 深層学習-前編 深層学習-後編 E資格試験対策 G検定でも上記の内容はでましたが、E資格ではより詳細でコードも含めた内容となっています。 また、1~4ではレポートの提出とテストの合格が必須条件になっています。 私が提出したレポート内容ですが、配布されたコードの実行キャプチャとビデオ講義の内容で大事な個所をまとめました。 テストの内容は講義で書かれていないことばかりですが、内容を把握していれば問題ないかと思います。ただし、間違っても正しい解答はわからない上にテスト実施は5回までとなっているので少し慎重になったほうがいいかもしれません。 解答料金やテスト実行回数増加料金(いずれも3千円ほど)払えばやりやすくなるかもしれませんが… 1~4まで終わるとE資格の修了者ナンバーがもらえます。ただし、修了者ナンバーをもらうまでの期限があるのでそれまでにレポートの提出とテスト合格しないといけません。大体E資格受験の1ヵ月前までが期限になります。 修了者ナンバーをもらえればこちらからアカウントを作成して、申し込みをし、受験料を払えば当日受験することができます。 果たしてこの資格が役に立つのかといえば微妙かもしれませんが、実際に手を動かすきっかけになるかと思うのでありかもしれません。また、今ならテストについては画像キャプチャしてGPTにでも聞けば解答を得られるかもしれないですね、やったことないですが… ブログの更新が遅くなりましたが引き続き勉強続けていきたいと思います。ではでは

2024年1月17日

Claude(クロード)という新しい生成AIを触ってみたよ

生成AIの進化がすごい昨今ですが7月頃に出たAnthropic社のClaudeという生成AIを触ってみました。 一応聞いてみましたが、やはり英語のほうが得意みたいですね。とはいえ日本語も対応しているみたいなので少し触ってみます。 Chat-GPTとどう違いがあるのかわかってなかったので聞いてみたら、こんな感じの回答をもらえました。Chat-GPTは会話重視ですがClaudeは情報提供重視みたいですね。ただ、情報提供だと曖昧なので少し深堀してみようと思います。 なるほど、こんな感じですか。とはいえChat-GPTと大きく違うかと言われるとまだよくわからないのですが… 次は最新情報の日付を調べてみましょう。Chat-GPTは2023年の4月時点の情報だったと思いますが、こっちはどうでしょうか? あまり的を得ない回答でした。もう少し具体的な日付を出せるようやってみましょう。最近起きた能登半島の地震について聞いてみました。 一応2022年のデータはあるが詳しい情報まではないという感じですね。最後にファイルの確認をしてみましょうか。 裁判の判例ファイルをアップしてみたのですが、合ってそうです。ちなみにこれ無料で使えています。Chat-gpt3.5だと判例は読み切れなかったかと思いますので、コスパに対する性能は高そうです。 今回はこれくらいで終わりにしようと思います。最近の進化は凄すぎてなかなか追うのは難しそうです。ですが、時代に取り残されないよう活用できる側にまわるため色んな情報を取り入れていきましょう!ではでは

2024年1月10日

転職メールの管理をBardにやらせたら楽になるのではと試行錯誤したやつ

ここのとこあまり役に立たなそうな事ばかり書いていたので変わった内容を書いてみました 転職を検討した際にいろんなサイトから"スカウト"や"気になる"などのメールが来るかと思います。正直をそれらを整理するのが面倒だし、確認も大変だなと思うことが多々あります。 そこでGmailを使ってるならBradを使って楽にならないのかと考えました 今回は"Green"という転職サイトを使ってみました。まずはこんな感じ なるほど、ここで表示されてるのは"スカウト"をいただいた企業様一覧ですね。 この一覧はスプレッドシートで見れるので作成してもらったらこんな感じ おお!これを使えばだいぶ管理がしやすくなるのでは! “スカウト"もありますが、“気になる"という機能もあるみたいでこちらは件数がかなり多いです。 おや?想定よりもかなり少ない件数になりました。 少し趣向を変えて質問してみようと思います。メールの文面で該当するものを抽出してもらいます。 確かにでましたが、やはり全部は出てこないみたいです。Gmailにはタブ別に分けられていたりするのでタブを指定してみました。 何をもって可能性が高いと言ってるかは不明ですが、200件以上あることはわかりました。 ただ、この表には200件も入ってなかったので入るよう指示を出します。 途中で切れてしまいました。そもそも1つの表にまとめてほしいのでそう指示を出してみます。 いやいや、まさかの手動でやれと!?面倒だから頼んでるのに!?ちょっと苛だったので命令口調に おお!これで確認が楽になるのか!数時間かかってもいいからやってくれるのであれば有難い!ということで必要な情報を渡しました。 これで出来たらウキウキだ!楽しみ!と思って待ってました。とはいえせっかちなので数十分後にきいてみました。 まあ、しょうがない件数も多かったから時間はかかるよねと。数時間後… いや、まだやってすらなかったのかい!ということで作業を開始するよう指示を出しました。数時間後… まとめる作業が大変みたいです。1.5Gってそんなにデータ量あるの!?と思いましたが辛抱強く待つことにしました。2日後… キターーーーーー!終わった!長かった!途中何回か聞きましたが、同じ回答だったので割愛しました。よし、このURLで確認できればこのやりとりももう終わり! はあ?ナニコレ?できてないじゃん。それとも出来たけど消したりでもした?Bardに呆れた私はこれ以降使うことをやめました。 とはいえ、誰かとのやり取りぐらいだったら簡単にまとめられそうなので忘れがちな人にはいいかもしれないです。 ただ、Chat-GPTでも個人情報の流出があったりしたので、Bardのような色んなGoogleアプリの連携ができるとより流出の可能性があるのでは?と気にしてたりします。 AIは便利ですが、万能ではなくリスクもあるので気を付けつつ、楽な暮らしを目指していきたいですね!ではまた次回の記事で

2023年12月27日

GitHubに今更創作物を登録してみました

転職をする際、エンジニアの場合自身で何か作ったものがあれば提出することがあると思います。また、転職サイトによってはGitを登録することもあると思います。 私は仕事に必要な時にその場で覚えるタイプなのですが、たまに興味があるものがあってそれを作ってみたいということがちょくちょくありました。ただ、最後まで作りきったことは少ないのですが… こちらから見ることはできると思います。publicなので誰でも見れます。仕事では基本privateですが、特に利益に繋がったり特別な制作物でなければpublicでもいい気がします。何が利益に繋がるかはわかりませんが… ところで、人のGitHubを見たことがほとんどないのですが、一般的にはどのようなものをGitにあげてるんでしょうか?何か面白いものや変わった制作物が上がってたりするんでしょうか? 以前会社で作ったものをGitに上げて転職に使ってた事件がありましたが、会社の制作物はいくら自身が作ったとはいえ問題ですね。私もそうならないよう気を付けつつ、何かしら作り続けたいなとは思います。頑張って最後まで作るよう努力します…

2023年12月20日

GASを使って勤怠管理の提出を忘れないようにしたい!

皆さんは日々の作業の中で提出物などはありますか? 私は月の初めの第1営業日、月の終わりから5営業日前、最終営業日に勤怠の提出があります。忘れがちな私はよく上司から提出していないと言われ、言う側も言われる側もストレスだと思い、Slackに通知が来るようなプログラムを組むことにしました。 連携で使用したアプリは以下の2つになります。 GAS(Google Apps Script) Slack やることは以下の順でやっていきます。 Slackに通知するためのアプリ作成 アプリの作成 通知の設定 ワークスペースへのインストールとURL作成 GASにコードを書いて日時実行の設定を行う コードの作成 実行トリガーの作成 アプリの作成 1つ目ですがまずはSlackのアプリ作成から始めます。こちらからアプリ作成ができます。リンク先に飛んだ後、赤枠の「Create New App」をクリックします。 この画面が出たら赤枠の「From scratch」をクリックします。 この画面が出たらアプリの名前と使用するワークスペースを設定します。仕事で使ってる人はワークスペースが所属している会社名になったりすると思います。設定が完了したら「Create App」をクリックします。 通知の設定 この画面になりますので「OAuth & Permissions」をクリックして、通知の設定をします。 次に、Scopesでアプリに与える権限の設定を行います。「Add an OAuth Scope」をクリックし、「incoming-webhook」を選択します。今回は特定のチャンネル(自身のみ)通知を送る設定なのでこちらを選択します。 ワークスペースへのインストールとURL作成 同じタブで下の方にスクロールするとこの画面が出ますので「install to Workspace」をクリックします。 次に、権限が求められますので投稿先を自身のチャンネルに設定して、「許可する」をクリックします。もし、他の人にも通知をしたい場合は、そのチャンネルに設定してください。 これで通知に必要なURLを設定することができましたので、次はコードの作成に移ります。 コードの作成 2つめのGASに関してはこちらを参考にして作り、コードのきれいさを保つため、Chat-GPTに頼みました。1つ目の設定が終わったらwebhook URLをコード内に貼り付けます。 もし、会社で特定の日が休日であればそこも考慮することができます。私は年末年始辺りの日付を入れてます。“specialHolidays"という変数に日付を入れていただけるとできます。 // Slackに特定の日の通知を送る関数 function documentAlert() { const today = new Date(); // const today = new Date("2023/12/22"); // テスト用: const monthEnd5Date = getLastDateOfMonth(today); const monthEnd1Date = getLastDateOfMonth(today); const monthStartDate = new Date(today.getFullYear(), today.getMonth(), 1); sendNotificationIfDue(today, monthEnd5Date, -5, today+"、5営業日前になりました。見込み版勤怠の提出をお願いします。"); sendNotificationIfDue(today, monthEnd1Date, -1, today+"、最終営業日になりました。確定版勤怠の提出をお願いします。"); sendNotificationIfDue(today, monthStartDate, 1, today+"、第一営業日になりました。自社勤怠と交通費精算の提出をお願いします。"); } // 営業日計算関数 function dayCount(date, offsetDays) { let counter = 1; while (counter <= Math.abs(offsetDays)) { if (!isHoliday_(date)) counter++; if (counter > Math.abs(offsetDays)) break; date.setDate(date.getDate() + Math.sign(offsetDays)); } return date; } // Slackに通知を送る関数 function slackSend(message) { const webhookUrl = "ワークスペースのWebhook URL"; const payload = { "text": message }; const options = { "method": "post", "muteHttpExceptions": true, "contentType": "application/json", "payload": JSON.stringify(payload) }; UrlFetchApp.fetch(webhookUrl, options); } // 休日か否かを判定する関数 function isHoliday_(date) { if (isWeekend(date) || isHolidayEvent(date) || isSpecialHoliday(date)) { return true; } return false; } // 土日判定 function isWeekend(date) { const dayOfWeek = date.getDay(); return dayOfWeek === 0 || dayOfWeek === 6; } // 祝日イベント判定 function isHolidayEvent(date) { const calendarId = "ja.japanese#holiday@group.v.calendar.google.com"; const events = CalendarApp.getCalendarById(calendarId).getEventsForDay(date); return events.length > 0; } // 特定の休日判定 function isSpecialHoliday(date) { const specialHolidays = ["0101", "0102", "0103", "1229", "1230", "1231"]; const formattedDate = Utilities.formatDate(date, "JST", "MMdd"); return specialHolidays.includes(formattedDate); } // 月末最終日を取得する関数 function getLastDateOfMonth(date) { return new Date(date.getFullYear(), date.getMonth() + 1, 0); } // 特定の日に通知を送るためのヘルパー関数 function sendNotificationIfDue(today, baseDate, offsetDays, message) { const targetDate = dayCount(baseDate, offsetDays); if (isSameDay(today, targetDate)) { slackSend(message); } } // 二つの日付が同じ日か判定する関数 function isSameDay(date1, date2) { return date1.getDate() === date2.getDate(); } 実行トリガーの作成 ...

2023年12月3日

GPTsを使って1からGCPを触ってみたよ

昨今OpenAIのCEOが退任したり、復帰したりと騒がせている状況ですが、私はGPTsをうまく使えないか模索していたりします。 そんな中でGPTsを使ってGCPの構築を手伝ってもらいました。まずはGPTsの設定ですね GPTsの設定は簡単でした。「Create a GPT」からオリジナルのGPTを作り、ガイドに従ってどのようなGPTを作りたいのか指示を出します。Configureは無視していいです。ファイルについては業界特有の知識などが必要であれば添付するといいかと思いますが、今回は使いません。 私の場合は、GCPの使い方を知りたかっただけですので特にファイルの添付なども不要です。その後は解答の仕方を聞かれたり、アイコンの見た目やGPTの名前を決めて完了になります。 作った後は簡単でひたすら作ったGPTに質問をします。BigQueryとFirestoreの違いは何か?とかcsvファイルのインポートの仕方はどうしたらいいか?とかLokker StudioとBigQueryを連携してレポートを出す方法を教えて等です。 以下は国のデータから人口動態のcsvファイルを取ってきてインポートしたデータになります。それをグラフで可視化してみました。 このようにGPTsを作って質問すれば、簡単にGCPの構築もできますし、試したいことも出てくると思います。IT系であれば特化したGPTは作りやすいですし、専門的な知識をファイルかURLで与えれば専門分野に特化したGCPもできると思います。また、他人が作成したGCPを使うこともできますので興味があれば調べて触ってみるのもいいと思います。では、よい生成AIライフを~

2023年11月24日

副業でGCPの案件をやりそうなので勉強中です

最近、友人から副業をやらないかというお誘いがありました。とはいえAWSを使ったことはありますが、GCPを使ったことがないのでとりあえず触ってみてほしいとのことでした。 触ってほしいのは以下の3つ firestore BigQuery Looker Studio Firestoreの役目としてはスキーマレスで動的なデータ構造に対応、スケーラビリティに優れ、リアルタイムのデータ処理に適しています。 BigQueryの役目としては複雑なデータ構造に対応、大規模かつ高速処理に特化し、大量で複雑な分析に向いています。 Looker StudioはBIツールとして使われ、BigQuery内のデータを可視化でき、ダッシュボードを作成し、ユーザーに理解しやすい形で表示できるツールになります。 ちなみにBigQueryにはデフォルトでオープンデータがあるのでデータ収集やインポートの必要はなさそうです。実務作業ではインポートの必要性もありそうですが、今は使えるようになるのが目標なのでこれで十分だと思います。 BigQueryでクエリを作成し、作られたデータをLooker Studioで表示するまではできそうなのですが、Firestoreのリアルタイムでデータは株や道路情報などがありますが、扱うのはもう少し先になりそうです。 副業案件までどこまで触れるかわかりませんが、自身のできることを増やし、その中で得意なこと、掛け合わせたもので専門性を高めて、来たるAI&1億人未満の日本社会に備えられたらなーとは思います。

2023年11月19日

parquetファイルの中身はVSCODEの拡張機能 Data Wranglerで見れる!

parquetファイルについて parquetファイルは非常に優秀なファイルだと思います。 pythonでデータを扱う場合、小規模のデータであればcsvファイルが使われがちですが、私の現場ではparquetファイルが使われています。 parquetのメリット メリットとしては データが圧縮されるため、ストレージの節約になる ファイルを読み込む際、型の指定をしなくても自動で読み込んでくれる データを列で読み込むと高速で読み込める parquetのデメリット デメリットとしては ファイルを手軽に扱えない(テキストファイルで開いたり、書き換えたり) 個人的にはこのように感じています。 Data Wranglerについて これがData Wrangler(ラングラー)を使えば手軽に見ることができます!ただし、書き換えたりはできないですが…。 しかも導入手順も簡単! 拡張機能からData Wranglerをインストール 対象のファイルを右クリック > Opne in Data Wranglerをクリック pythonやjupyter notebookのカーネルに接続する 必要なライブラリが足らなければインストールを行う こうすることで以下のような画面でparquetファイルの中身を見ることができます!(画面黒いと目にいいよね) csvファイルも同じように見れます ちなみに上記のデータはスクレイピングで取ってきた求人情報になります(スクレイピングプログラムはChat-GPTに頼みました)。一応利用規約見てスクレイピングに関する規約はなかったので大丈夫かと思いますが、もしやる際は連続アクセスにならないよう2,3秒時間を空けることを勧めます。 データ操作について 上のカラム名の場所に欠損の数やユニークな値の数、数値であればヒストグラムの分布などが描かれたりします また左の操作でカラムの操作や欠損値埋め、文字列変換、グループ化など簡単なデータ変換であればこちらで操作できるうえに、コード化ファイルを出力することもできます! おおまかにデータを見ながら加工をし、そのプログラムを作ってくれる素晴らしい機能をMicrosoftが提供していますのでぜひ活用していきたいですね!

2023年11月7日