Claude APIとGASで関数呼び出し(tools)を使って、児童虐待対応の最重要ポイント「1個だけに絞って」出力してみた

はじめに

こんにちは。
児童虐待が増えています。

・・・

難しいですよね。
そうなんです。児童福祉はとても大事なのですが、なんだか堅苦しい、自分とは遠いお話のように聞こえてしまうのです。

こんなとき、もっとわかりやすく、シンプルに教えてほしいですよね。

今回はClaude APIとGASを使って、Toolsを使ってみたいと思います。OpenAI APIでいうところのFunction Calling、いわゆる関数呼び出しというやつですね。

今回は関数を呼び出すことよりも、JSON modeとして、特定の形式に基づいた出力をさせればOKとします。

時間がないので省略しますが、Claudeが特定書式での出力を行ってくれれば、児童虐待に関する周知・啓発活動がもっと効率よく、より幅広い層に行えるはずです。

SNS、チャットなど、この機会にぜひ児童虐待に関する知識を広げていきましょう。

入力する文章

まずは、政府広報の児童虐待の説明を見ていきましょう。
HPの方が読みやすい、などと言ってはいけません。

let userMessage1 = `

児童虐待かも?と思ったら「189」(いちはやく)こどもたちの未来を守るために(以下略。続きは政府広報HPを読んでください。必ず。)
`

コード

続いて、これらを形式に合わせて要約してもらいます。今回はtitleとsummaryに格納していただきます。

function Claude3_tool() {

let tools1 = [
      {
        "name": "development_disorder_child_summary",
        "description": "発達障害や幼児に関するニュースや文章が入力したときに使用し、文章を箇条書きで要約するものです",
        "input_schema": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "タイトル見出しを作成します",
            },
            "summary": {
              "type": "string",
              "description": "子供の困りごとに関する知識やニュースを箇条書きに要約したものを出力します。",
            },          
          },
          "required": []
        },
      }
    ]


    const url = 'https://api.anthropic.com/v1/messages';
    const payload = {
        model: "claude-3-haiku-20240307",
        max_tokens: 4096,
        messages: [{"role": "user", "content": userMessage1}],
        tools: tools1
    };

    const options = {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'x-api-key': CLAUDE_API_KEY,
            'anthropic-version': '2023-06-01',
            'anthropic-beta': 'tools-2024-04-04',
        },
        payload: JSON.stringify(payload),
    };

    try {
        let response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText())

        console.log(response)
        console.log(response.content[0])

        if(response.content[0].type == "tool_use") {
          // ツールの中身を取得する!
          let tool_name = response.content[0].name
          let tool_arguments = response.content[0].input

          if(tool_name == "development_disorder_child_summary") {
            console.log("ツールです",tool_arguments)
            development_disorder_child_summary(tool_arguments)
          }
        } else {
          console.log("ツールではない:",response.content[0].text)
        }

    } catch {
      console.log("エラー")
        return "claudeでエラー"
    }

}

function development_disorder_child_summary (input) {

  // inputの中身を取り出す
  let title = input.title
  let summary = input.summary

  console.log(title,summary)

  // 何かしらの処理(例えばTwitterに投稿したり、Googleスプレッドシートに書き込んだり、Chatしたりして、児童虐待に関する知識を普及・啓発するコード

}

出力結果

	{ id: 'msg_01Npo834RiY8jnLJjGter5QK',
  type: 'message',
  role: 'assistant',
  model: 'claude-3-haiku-20240307',
  stop_sequence: null,
  usage: { input_tokens: 2726, output_tokens: 317 },
  content: 
   [ { type: 'tool_use',
       id: 'toolu_01RxobQisiuEFmpbXtHVAzG6',
       name: 'development_disorder_child_summary',
       input: [Object] } ],
  stop_reason: 'tool_use' }
{ type: 'tool_use',
  id: 'toolu_01RxobQisiuEFmpbXtHVAzG6',
  name: 'development_disorder_child_summary',
  input: 
   { title: '児童虐待への対応',
     summary: '1. 児童虐待とは\n- 身体的虐待、性的虐待、ネグレクト、心理的虐待の4つのタイプがある\n- 虐待は子どもの心身に深刻な影響を及ぼす\n\n2. 虐待サインを見逃さない\n- 子どもや保護者の様子に「何か変だ」と感じたら気づく\n- 服装の汚れ、落ち着きのなさ、保護者の孤立など、複数の虐待サインに気づく\n\n3. 早期発見・通報が大切\n- 「189(いちはやく)」の虐待対応ダイヤルに通報\n- 匿名でも構わず、ためらわずに通報することが子どもを守ることにつながる' } }


児童虐待への対応

1. 児童虐待とは

  • 身体的虐待、性的虐待、ネグレクト、心理的虐待の4つのタイプがある

  • 虐待は子どもの心身に深刻な影響を及ぼす

  1. 虐待サインを見逃さない

  • 子どもや保護者の様子に「何か変だ」と感じたら気づく

  • 服装の汚れ、落ち着きのなさ、保護者の孤立など、複数の虐待サインに気づく

  1. 早期発見・通報が大切

  • 「189(いちはやく)」の虐待対応ダイヤルに通報

  • 匿名でも構わず、ためらわずに通報することが子どもを守ることにつながる

改善

いまいちですね。
私はもっと、「何かあったら動ける!!!!」「絶対にこれだけは覚えてほしい!」というポイントに絞った出力が効果的だと思うのです。

toolsを改善して、より的を絞った出力をしてもらいましょう。

let tools1 = [
      {
        "name": "development_disorder_child_summary",
        "description": "発達障害や幼児に関するニュースや文章が入力したときに使用し、文章を箇条書きで要約するものです",
        "input_schema": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "タイトル見出しを作成します",
            },
            "summary": {
              "type": "string",
              "description": "子供の困りごとに関する知識やニュースを箇条書きに要約したものを出力します。",
            },          

            "importantaction": {
              "type": "string",
              "description": "児童虐待かもしれないと思ったときに、必ず取るべき1つの行動アクションを端的に記載する。児童虐待に詳しくない人も、記事の中で、これだけは覚えておいてほしいポイントを1つに絞って端的に、印象的なものをここに1つだけ書き込む。",
            },   

          },
          "required": []
        },
      }
    ]

impotantactionを追加しました。
toolsは、3~4文程度、「説明」することが大事だそうです。

結果を見ていきましょう。
使用した関数はこちら。

function development_disorder_child_summary (input) {

  // inputの中身を取り出す
  let title = input.title
  let summary = input.summary
  let action = input.importantaction

  console.log(title)
  console.log(summary)
  console.log(importantaction)

  // 何かしらの処理(例えばTwitterに投稿したり、Googleスプレッドシートに書き込んだり、Chatしたりする

}

結果はこちら。

児童虐待への対応

  1. 児童虐待の定義と種類

  • 身体的虐待、性的虐待、ネグレクト、心理的虐待の4つに分類される

  • 虐待は子どもの心身に深刻な影響を与える

  1. 虐待の兆候

  • 子どもや保護者の行動に特徴的なサインがある

  • 一つだけでなく複数の兆候がある場合に虐待が疑われる

  1. 虐待を疑ったら

  • 児童相談所虐待対応ダイヤル「189」に連絡する

  • 匿名で通報でき、専門家が対応してくれる

  • 虐待の確信がなくてもためらわずに連絡することが重要

児童虐待の疑いがある場合は、すぐに児童相談所虐待対応ダイヤル「189」に連絡すること。確信がなくてもためらわずに通報し、専門家に状況を伝えることが大切。

すばらしい機能です。

まとめ

今回は、児童虐待相談ダイヤル「189」の解説でした。
みなさん、189の使い方、覚えていただけたでしょうか。


この記事が気に入ったらサポートをしてみませんか?