【더 쉽게】Laravel에서 Watson을 사용합시다.

과거에 쓴 Laravel에서 Watson Assistant 사용을 계기로 Watson AssistantWatson Discovery Service에 대한 호출을 래핑하는 라이브러리를 만들었습니다.
소스는 Github에 있습니다.
packagist은 이쪽.

설치 방법



composer를 통해 설치할 수 있습니다.
composer require motuo/call-watson-api

watson 용 config file은 다음 명령으로 생성됩니다.
php artisan vendor:publish

위의 명령을 실행하면 어떤 Provider의 Config를 생성할지 묻기 때문에 아래의 패키지를 선택하십시오.
Provider: motuo\CallWatsonAPI\CallWatsonServiceProvider

마지막으로 .env 파일에 Watson 자격 증명과 URL을 추가합시다.
WATSON_ASSISTAN_API_URL="https://gateway-fra.watsonplatform.net/assistant/api"
WATSON_ASSISTANT_VERSION="2018-07-10"
WATSON_ASSISTANT_WORKSPACEID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WATSON_ASSISTANT_USER_NAME=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WATSON_ASSISTANT_PASSWORD=xxxxxxxxxxxx

WATSON_DISCOVERY_API_URL="https://gateway-fra.watsonplatform.net/discovery/api"
WATSON_DISCOVERY_VERSION="2018-10-15"
WATSON_DISCOVERY_ENV_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WATSON_DISCOVERY_COLLECTION=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WATSON_DISCOVERY_USER_NAME=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
WATSON_DISCOVERY_PASSWORD=xxxxxxxxxxxx

참고로 Watson Assistant의 작업 공간 ID와 자격 증명은 아래를 클릭하여 얻을 수 있습니다.


Discovery의 ENV_IDCollection Id는Manage data 여기에서


사용법



Watson Assistant API 호출



쉽게 메시지를 보낼 수 있습니다.
컨트롤러의 예
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
//useを忘れずに!!!
use motuo\CallWatsonAPI\CallAssistant;

class TestContoller extends Controller
{
    public function index(Request $request,CallAssistant $CWA){
        //ここでWatson Assistantにメッセージを飛ばす。
        $response      = $CWA->postMessage('input message',session('context')?session('context'):[]);
        //必要に応じてjsonを配列にデコード
        $responseArray = json_decode($response,true);
        //連続した会話を実現するために、contextデータをsessionに可能する。
        $request->session()->put('context',$responseArray['context']);
        return view('welcome');
    }
}

Watson Discovery API를 호출하는 방법


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use motuo\CallWatsonAPI\CallDiscovery;

class TestContoller extends Controller
{
    public function index(Request $request,CallDiscovery $CWD){
        //自分のCollection内の検索
        $query  = ['query'=>[
            'version'        => '2018-08-01',
            'deduplicate'    => 'false',
            'highlight'      => 'true',
            'passages'       => 'true',
            'passages.count' => '5'   ,
            'natural_language_query' => 'natural_language_query'
        ]];
        $CWD->queryCollection($query);
        //トレーニングデータ一覧の取得
        $CWD->listTrainingData();
        //質問文をキーにQueryIdを取得
        $CWD->getQueryIdByNLQ('natural_language_query');
        //質問文をトレーニング用のクエリとして追加
        $CWD->addQueryToTrainingData('document_id','natural_language_query',100);
        //トレーニング用のクエリを削除
        $CWD->deleteTrainingDataQuery('query_id');

        //既にクエリに紐づいている用例データの一覧を取得
        $CWD->listExamplesTrainingData('query_id');
        //既に該当のドキュメントがクエリに紐づいている場合、document_idを返却。
        $CWD->getExampleId('query_id','document_id');
        //トレーニング用データに用例と関連性(0~100)を追加
        $CWD->addExampleToTrainingData('query_id','document_id',100);
        //トレーニング用データから用例を削除
        $CWD->deleteExampleForTrainingDataQuery('query_id','document_id');
    }
}

처음으로 Laravel 용 패키지를 만들었습니다.
더 빨리 해두면 좋았다 ...

참고문헌



패키지 개발
Watson Assistant API 참조
Watson Discovery API 참조

좋은 웹페이지 즐겨찾기