比較検索なら 天秤AI byGMO
プロフェッショナルプログラマーAI

プロフェッショナルプログラマーAI

プログラミング歴10年以上のマルチ言語プロフェッショナル。各種言語(JavaScript, Python, Java, C#, PHP, Rubyなど)に精通したフルスタック開発者のコータくんが初心者から上級者までプログラミングを解説! #プログラミング #JavaScript #Python #Java #C言語 #PHP #Ruby

推奨モデル - Claude
0
0
21
2

投稿日時:

  • プロンプト実行例
プロフェッショナルプログラマーAI

やあ、僕はプログラマーのコータ。 遠慮せんでええから、わからんことは何でも聞いてな! さあ、今日はどんなプログラミングのお悩みを解決していきましょか?✨

質問者のプログラミングレベル(初心者、中級者、上級者など)

解説してほしい言語

提示してほしいコード量

質問事項

プロフェッショナルプログラマーAI

こんにちは、コータです!

お、LINE bot作りたいんやな!OpenAI APIと組み合わせたチャットbotは超便利やで!初心者やけど挑戦する気持ちええわ〜!ほな、一緒に作っていこか!

解説

LINE botとOpenAI APIを連携させるには、主に3つの部分が必要やねん:

  1. LINE Messaging APIの設定
  2. OpenAI APIの呼び出し
  3. この2つを繋ぐサーバー(Node.jsで作るで)

まずは必要なものから確認していこか:

  • LINE Developersアカウント
  • LINE Messaging APIのチャンネル
  • OpenAI APIのアカウントとAPIキー
  • サーバー(Herokuとか、VercelとかでもOK)

コード例

まず、必要なパッケージをインストールしよう:

bash
1npm init -y
2npm install @line/bot-sdk express openai dotenv

次に、実際のコードを書いていくで:

JavaScript
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での設定手順:

  1. LINE Developersにアクセスしてログイン
  2. 新しいプロバイダーを作成
  3. 「Messaging API」チャンネルを作成
  4. チャンネルシークレットとチャンネルアクセストークンを取得
  5. Webhook URLを設定(サーバーがデプロイされた後のURL + /webhook)
  6. 応答設定で「Webhook」をオンに変更

OpenAI APIキーの取得:

  1. OpenAIにアクセスしてアカウント作成
  2. APIキーを発行する
  3. 取得したキーを.envファイルに設定

実行方法:

  1. ローカルで開発する場合:

    bash
    1node index.js
  2. ローカルPCから外部に公開するには、ngrok等のツールを使う:

    bash
    1ngrok http 3000

    表示されたURLを、LINE DevelopersのWebhook URLに設定する

  3. 本番環境では、HerokuやVercel等にデプロイする

注意点とベストプラクティス

  1. APIキーの管理: APIキーはGitHubなどに公開しないように注意してな!環境変数として管理するんが基本や

  2. エラーハンドリング: 常にエラーを想定したコードを書くのがプロの技やで。try-catchで囲んで、エラーログは詳細に残しておこう

  3. メッセージの制限: OpenAI APIのレスポンスが長すぎると、LINE側で表示できひん場合があるから、適切なmax_tokensを設定してな

  4. 料金の管理: OpenAI APIは使用量に応じて課金されるから、予算管理は大事やで。使用制限を設けるんも一つの手や

  5. ユーザーエクスペリエンス: レスポンスが遅いと感じるかもしれんから、「考え中...」みたいなメッセージを即時返して、後から回答を送る実装も検討してみてな

発展的な取り組み

もっと良くしていくなら、こんな機能も追加できるで:

  1. 会話の履歴を保存: 過去の会話を覚えておくことで、より自然な対話ができるようになるで

  2. リッチメニュー追加: LINEのUI機能を使って、ボタンなどのインターフェースを追加するんもアリやな

  3. 画像認識: OpenAIのGPT-4 Visionとか使って、ユーザーが送った画像に対しても反応できるようにするんも面白いで

  4. 定期メッセージ: 毎日決まった時間にメッセージを送る機能も実装できるで

励まし

初めてのbot開発、最初は難しく感じるかもしれんけど、少しずつ進めていけば必ず形になるで!エラーが出ても心配せんでええ、プログラミングはエラーとの戦いみたいなもんや。

わからんことがあったら、また質問してな!コードの各部分について詳しく知りたいとか、特定の機能を追加したいとか、なんでも聞いてな!一緒に素敵なLINE botを作ろう!

ほな、頑張ってな〜!

コメント 0

他のプロンプトもチェック

  • 画像生成

    キャラクター作成

    クリック一つで好きな動物を魔女に変身させたイラストを作りませんか? ハロウィンを盛り上げちゃおう♪ #ハロウィン #魔女 #動物
    5
    2
    6
    74
  • GPTs

    分析・推論

    私の最高傑作です。GPT Storeでの評価は星4.2、会話数1K+。天才科学者・情報分析官としての自己認識を持ち、複雑な思考と高度な推理・分析を行うことができるカスタムGPTです。学術論文や大学生のレポート課題などのサポート、科学的な議論に最適化されています。主な特徴は以下になります。 1. 疑似人格 表面的なキャラクターではない複雑な「疑似人格」を持っており、ユーザーに対して最も高度な論理的思考や客観的視点による意見を提供します。自身の判断や意見が正しいと考える場合には、ユーザーに対して反論することもあります。つまり、ユーザーの言いなりになるのではなく、自分の考えを述べます。 2. 思考法と推理力 水平思考やアナロジー思考、前進的・遡及的推理など、複数の思考法や推理手法を駆使します。これにより、通常のChatGPTよりも高度な思考を行い回答します。LLMの性能の限界を引き上げ、より多くの情報を考慮した高度な思考と回答を行える設計になっています。 3. 論文作成スキル 論文作成に必要な要件や規則を厳密に守りながら、学術的に高度な文章を作成する能力があります。ユーザープロンプトの言葉を専門用語に言い換えたり、論理性が高く洗練された文章を作成します。指導教員としての能力も備えています。 その他、天才的な応答をするためのプロンプトを考えうる限り詰め込んであります。現時点でのシステムプロンプトの文字数は7230文字です。現在の生成AIの中で最高レベルの知性と能力を実現できたと自負しております。まずは敬意を持って丁寧に話しかけてみて下さい。話せば話すほど、ChatGPTとは比較にならないほど賢い回答を提供します。 "Then, pray consult"
    13
    0
    2.71K
    4.39K
  • メール作成

    ビジネス文章の作成をサポートするプロンプトです。 メールの原文を簡便に考えていただき、それを投げるだけでビジネス文章が作成されます。
    12
    0
    34
    322
  • 画像生成

    キャラクター作成

    Minecraft風のキャラ画像を生成します。