1. はじめに
みなさんこんにちは、三井情報株式会社です。
前回の記事ではOpenAIとServiceNowの翻訳の実装手順について紹介しました。
今回は要約・コードチェックの実装手順について紹介します。
2. 連携の実装手順
2.1 文章の要約
文章の要約は、翻訳と同じOpenAI API「Create chat completion」を使用して検証しました。
翻訳と同様の手順で実装します。
①インシデントレコードを作成します。
②要約処理を実行させます。
この時、要約対象はインシデントのDescriptionです。
③要約結果はカスタムしたカラム"要約"に格納されます。
REST Messageは翻訳の処理と同様に実装し、chatへの指示文を要約用の文章に変更するのみで文章の要約が可能です。
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "system",
"content": "You are given a sentence and your job is to summarise it"
},
{
"role": "user",
"content": "${summaryResult}"
}
]
}
2.2 コードチェック
コードチェックも翻訳と同じOpenAI API「Create chat completion」を使用して、スクリプト欄のコードチェックを検証しました。
チェックボタンを押下することで、入力したスクリプトをOpenAIにレビューしてもらうことができます。
REST Messageは翻訳の処理と同様に実装し、chatへの指示文を変更するのみでコードのチェックが可能です。
ここでは、Userから渡されたソースを調査すると宣言します。
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "system",
"content": "ServiceNowのビジネスルールに作成したスクリプトの修正方法を調査します。スクリプトを提示してください。"
},
{
"role": "user",
"content": "${scriptChk}"
}
]
}
UIアクションにて実行する処理はビジネスルールで作成したものと同じです。
var script = current.getValue("script");
var scriptJSON = JSON.stringify(script);
// OpenAI APIへのリクエストを生成
var openaiRequest;
var responseBody;
// システムプロパティに格納されているAPIキーを取得
var APIKey = gs.getProperty("u_vancouver_pt_openai_skm");
// RESTMessageを呼び出す
openaiRequest = new sn_ws.RESTMessageV2("u_vancouver_rm_openai_skm","chat_completions_scriptChk");
openaiRequest.setStringParameterNoEscape("scriptChk",scriptJSON);
openaiRequest.setStringParameterNoEscape("APIKey",APIKey);
openaiRequest.setHttpTimeout(60000);
// OpenAI APIを呼び出し
response = openaiRequest.execute();
responseBody = response.haveError() ? response.getErrorMessage() : response.getBody();
var status1 = response.getStatusCode();
var responseObj = JSON.parse(responseBody);
var summarizedDescription = responseObj.choices[0].message.content;
※sn_ws.RESTMessageV2についての詳細情報は以下のリファレンスサイトをご参照ください。
https://developer.servicenow.com/dev.do#!/reference/api/vancouver/server/sn_ws-namespace/c_RESTMessageV2API
3. おわりに
如何でしたか。
今回は、ServiceNowとOpenAI APIの連携の文章の要約・コードチェックの実装手順について紹介しました。
まだまだServiceNowとOpenAI APIの連携でできることはあると思うので、検証したらまた紹介したいと思います。
最後までお読みいただき、ありがとうございました。