
プロフェッショナルプログラマーAI
投稿日時:
- プロンプト実行例
やあ、僕はプログラマーのコータ。 遠慮せんでええから、わからんことは何でも聞いてな! さあ、今日はどんなプログラミングのお悩みを解決していきましょか?✨
質問者のプログラミングレベル(初心者、中級者、上級者など)
解説してほしい言語
提示してほしいコード量
質問事項
こんにちは、コータです!
お、LINE bot作りたいんやな!OpenAI APIと組み合わせたチャットbotは超便利やで!初心者やけど挑戦する気持ちええわ〜!ほな、一緒に作っていこか!
解説
LINE botとOpenAI APIを連携させるには、主に3つの部分が必要やねん:
- LINE Messaging APIの設定
- OpenAI APIの呼び出し
- この2つを繋ぐサーバー(Node.jsで作るで)
まずは必要なものから確認していこか:
- LINE Developersアカウント
- LINE Messaging APIのチャンネル
- OpenAI APIのアカウントとAPIキー
- サーバー(Herokuとか、VercelとかでもOK)
コード例
まず、必要なパッケージをインストールしよう:
1npm init -y
2npm install @line/bot-sdk express openai dotenv次に、実際のコードを書いていくで:
1// index.js
2
3// 必要なライブラリを読み込み
4require('dotenv').config(); // 環境変数を使うための設定
5const express = require('express'); // Webサーバーのフレームワーク
6const line = require('@line/bot-sdk'); // LINE Bot SDK
7const { OpenAI } = require('openai'); // OpenAI API
8
9// 環境変数から設定を読み込み
10const config = {
11 channelAccessToken: process.env.LINE_CHANNEL_ACCESS_TOKEN, // LINEのアクセストークン
12 channelSecret: process.env.LINE_CHANNEL_SECRET // LINEのチャンネルシークレット
13};
14
15// OpenAI APIの設定
16const openai = new OpenAI({
17 apiKey: process.env.OPENAI_API_KEY // OpenAIのAPIキー
18});
19
20// Expressアプリの初期化
21const app = express();
22
23// LINEクライアントの初期化
24const lineClient = new line.Client(config);
25
26// テキストメッセージを受け取った時の処理を定義
27async function handleText(message, replyToken) {
28 try {
29 // OpenAI APIを呼び出してレスポンスを取得
30 const response = await openai.chat.completions.create({
31 model: "gpt-3.5-turbo", // 使用するモデル
32 messages: [
33 { role: "system", content: "あなたは親切なアシスタントです。" }, // システムメッセージ
34 { role: "user", content: message.text } // ユーザーの入力
35 ],
36 max_tokens: 500 // 返答の最大トークン数
37 });
38
39 // OpenAIからの回答を取得
40 const aiResponse = response.choices[0].message.content;
41
42 // LINEに返信
43 return lineClient.replyMessage(replyToken, {
44 type: 'text',
45 text: aiResponse
46 });
47
48 } catch (error) {
49 console.error('Error:', error);
50 // エラーが発生した場合のメッセージ
51 return lineClient.replyMessage(replyToken, {
52 type: 'text',
53 text: 'ごめんね、エラーが発生したよ。後でもう一度試してみてね!'
54 });
55 }
56}
57
58// Webhookを受け取るエンドポイントの設定
59app.post('/webhook', line.middleware(config), (req, res) => {
60 Promise
61 .all(req.body.events.map(handleEvent)) // すべてのイベントを処理
62 .then((result) => res.json(result)) // 結果をJSONで返す
63 .catch((err) => {
64 console.error(err);
65 res.status(500).end(); // エラーが発生したら500エラーを返す
66 });
67});
68
69// イベントハンドラー関数
70async function handleEvent(event) {
71 // メッセージイベント以外は無視する
72 if (event.type !== 'message' || event.message.type !== 'text') {
73 return Promise.resolve(null);
74 }
75
76 // テキストメッセージの処理関数を呼び出す
77 return handleText(event.message, event.replyToken);
78}
79
80// サーバーの起動
81const port = process.env.PORT || 3000;
82app.listen(port, () => {
83 console.log(`Server running on port ${port}`);
84});次に、環境変数を設定するための .env ファイルも作成しておこう:
1# .env ファイル
2LINE_CHANNEL_ACCESS_TOKEN=ここにLINEのチャンネルアクセストークンを入れてな
3LINE_CHANNEL_SECRET=ここにLINEのチャンネルシークレットを入れてな
4OPENAI_API_KEY=ここにOpenAIのAPIキーを入れてな設定方法と実行結果
LINE Developersでの設定手順:
- LINE Developersにアクセスしてログイン
- 新しいプロバイダーを作成
- 「Messaging API」チャンネルを作成
- チャンネルシークレットとチャンネルアクセストークンを取得
- Webhook URLを設定(サーバーがデプロイされた後のURL + /webhook)
- 応答設定で「Webhook」をオンに変更
OpenAI APIキーの取得:
- OpenAIにアクセスしてアカウント作成
- APIキーを発行する
- 取得したキーを.envファイルに設定
実行方法:
-
ローカルで開発する場合:
bash1node index.js -
ローカルPCから外部に公開するには、ngrok等のツールを使う:
bash1ngrok http 3000表示されたURLを、LINE DevelopersのWebhook URLに設定する
-
本番環境では、HerokuやVercel等にデプロイする
注意点とベストプラクティス
-
APIキーの管理: APIキーはGitHubなどに公開しないように注意してな!環境変数として管理するんが基本や
-
エラーハンドリング: 常にエラーを想定したコードを書くのがプロの技やで。try-catchで囲んで、エラーログは詳細に残しておこう
-
メッセージの制限: OpenAI APIのレスポンスが長すぎると、LINE側で表示できひん場合があるから、適切なmax_tokensを設定してな
-
料金の管理: OpenAI APIは使用量に応じて課金されるから、予算管理は大事やで。使用制限を設けるんも一つの手や
-
ユーザーエクスペリエンス: レスポンスが遅いと感じるかもしれんから、「考え中...」みたいなメッセージを即時返して、後から回答を送る実装も検討してみてな
発展的な取り組み
もっと良くしていくなら、こんな機能も追加できるで:
-
会話の履歴を保存: 過去の会話を覚えておくことで、より自然な対話ができるようになるで
-
リッチメニュー追加: LINEのUI機能を使って、ボタンなどのインターフェースを追加するんもアリやな
-
画像認識: OpenAIのGPT-4 Visionとか使って、ユーザーが送った画像に対しても反応できるようにするんも面白いで
-
定期メッセージ: 毎日決まった時間にメッセージを送る機能も実装できるで
励まし
初めてのbot開発、最初は難しく感じるかもしれんけど、少しずつ進めていけば必ず形になるで!エラーが出ても心配せんでええ、プログラミングはエラーとの戦いみたいなもんや。
わからんことがあったら、また質問してな!コードの各部分について詳しく知りたいとか、特定の機能を追加したいとか、なんでも聞いてな!一緒に素敵なLINE botを作ろう!
ほな、頑張ってな〜!
コメント 0
他のプロンプトもチェック
資料作成
推奨モデル - ChatGPT✨最強プレゼンAI爆誕!🎯資料&台本を秒速で生成🙌 🔥台本つきで超安心!🎙️伝わるプレゼンが秒速で完成🙋♂️💬 #パワポ #資料作成 #プレゼン #会議 #企画15301.22K8.11KGPTs
計画立案
このGPTは、営業マンが社長や経営者に対して提案を行う際のトークを支援するために設計されています。社長のニーズに応える共感的かつ説得力のある提案トークを作成し、営業の成功率を高めます。 #営業 #chatGPT #社長 #提案 #GPTs #業務改善5020172GPTs
キャラクター作成
▼最新作はこちら▼ https://oshiete.ai/item_lists/73557973863457792 あなたの顔写真を送付するだけで顔面偏差値を数字で出力してくれます。各項目別に点数付けしてくれて、顔の強みや特徴まで分析してくれるツール。客観的評価を知りたい方はぜひ使ってみてください。622.84K10.2KSEO
推奨モデル - ChatGPTあなたが売りたい商品のURLを送信するだけ。 URLを送信するだけ。完全全自動でSEO最適化された記事作成ができます! あなたの商品リンクを高品質なアフィリエイト記事に変換します。SEO最適化された魅力的な記事を、思考停止でわずか数秒で生成。面倒な執筆作業から解放され、アフィリエイト収益に集中できます。 主な特徴: 完全自動化:商品URLを入力するだけで、充実した記事を即座に作成 SEO対策済み:検索エンジンで上位表示を狙える最適化された文章構成 売上重視:購買意欲を刺激する、説得力のある商品紹介 多様な記事スタイル:レビュー、比較、ハウツーなど、様々な形式に対応 時間節約:記事作成の時間を大幅に削減し、ビジネス戦略に集中 「売れるアフィリエイトSEO記事メーカー」で、あなたのアフィリエイトマーケティングを次のレベルへ。URLを送信するだけで、収益化への道が開かれます。17188651