SQL は ChatGPT を実行できますか?答えはYESです!

SQL は ChatGPT を実行できますか?答えはYESです!

ChatGPTは世界中で人気を博しています。今日の質問は、SQL で ChatGPT を実行できるかどうかです。

一緒に見てみましょう。

Couchbase N1QL (SQL++ とも呼ばれる) は、Couchbase に保存されている JSON データをクエリするための SQL のような言語です。

Couchbase N1QL の CURL() 関数は外部サービスに HTTP リクエストを送信するため、ChatGPT の API エンドポイントにリクエストを送信して ChatGPT を呼び出すことができます。

Couchbase の JavaScript UDF は、N1QL クエリの一部として実行できる JavaScript で記述された関数であり、ChatGPT の API エンドポイントに HTTP リクエストを送信して ChatGPT を呼び出すためにも使用できます。

ChatGPT を Couchbase N1QL に接続するには、ChatGPT の API エンドポイントと、それにアクセスするために必要な認証資格情報を知っておく必要があります。

CURL() 関数を使用して Couchbase N1QL から ChatGPT を呼び出す構文は次のとおりです。

 SELECT CURL("https://api.openai.com/v1/engines/davinci/completions", { "request": "POST", "headers": [ "Authorization: Bearer ChangeToYourKeyElseWontWork", "Content-Type: application/json" ], "data": '{ "prompt": "Write a song on SQL using the style of Taylor Swift songs.", "max_tokens": 200 }' }) AS result ;

応答は次のとおりです。

 [ { "result": { "choices": [ { "finish_reason": "length", "index": 0, "logprobs": null, "text": " Where Swift sneakily commands, “…here you go / I wrote it on my phone so you could Google it,” you should write: “…here's my query / I'll drink my coffee and then will spool it.” Or, “…Here's what I'm thinking / I pilfered my colleague's project.” Only you can aspire to provide the official Taylor Swift SQL spoof song (don't forget to play some chord tinkling).\n\n4. Invent an official buzzword for lambda expressions. Start a campaign to make “lambda-eme” or variants thereof the standard. Try to get lambda-me in all the common tools available (lamellar, lambmaster, lambator, lambda café, lambananas, and so on).\n\n5. Write about a process that took you too long in just 5 minutes. Make fun of" } ], "created": 1675103061, "id": "cmpl-6eT7FnvGFN9HViONQnDhv5uabM6AO", "model": "davinci", "object": "text_completion", "usage": { "completion_tokens": 200, "prompt_tokens": 13, "total_tokens": 213 } } } ]

ChatGPT にパラメータを渡すには、上記の例のデータ フィールドを変更します。のように:

 "data": '{ "prompt": "Write a song on SQL using the style of Taylor Swift songs.", "temperature": 0.5, "max_tokens": 200 }'

次に、Couchbase N1QL と CURL() について詳しく説明します。

カウチベースN1QL

Couchbase N1QL (Non-First Normal Form Query Language) は、Couchbase に保存されている JSON データをクエリするための SQL のような言語です。 CURL() 関数を含む、データを変換および操作するためのさまざまな関数を提供します。

CURL() 関数

CURL() 関数を使用すると、N1QL クエリから外部サービスに HTTP リクエストを送信できます。これは、Couchbase を他のシステム (Web API など) と統合する場合や、Couchbase でさらに処理するために Web データを取得する場合に便利です。

Couchbase N1QL で CURL() 関数を使用するための構文は次のとおりです。

 SELECT CURL(<url>, <options>); SELECT RAW list FROM CURL("https://api.github.com/users/sitaramv/repos") AS list LIMIT 1;

CURL() 関数は、ユーザー sitaramv のリポジトリを返す URL に GET リクエストを送信します。

関数の結果は応答変数リストに保存され、その後、他の N1QL 関数を使用してさらに処理できます。

<options> オブジェクトには、HTTP リクエスト メソッド (GET、POST、PUT など) を指定するために使用される属性、カスタム HTTP ヘッダー情報を設定するために使用される属性、リクエストで送信されるデータなど、複数の属性を含めることができます。

CURL() 関数を使用してデータを外部サーバーに投稿する方法の例を次に示します。

 select imagetext from curl("https://vision.googleapis.com/v1/images:annotate?key=PUT YOUR KEY HERE", {"request": "POST", "header":"Content-Type: application/json", "data": '{ "requests": [ { "image": { "source": { "imageUri": "http://www.couchbase.com/blog/wp-content/uploads/2018/01/Screen-Shot-2018-01-21-at-6.50.38-PM.png" } }, "features": [ { "type": "TEXT_DETECTION" } ] } ] }'}) AS imagetext

この例では、CURL() 関数は、リクエスト本文に JSON ペイロードを含む POST リクエストを URL に送信します。

カスタム ヘッダー Content-Type: application/json は、要求されたデータを JSON 形式に設定します。

Couchbase N1QL の CURL() 関数は、Couchbase を外部システムに接続し、Web からデータを取得する便利な方法を提供します。 HTTP メソッド、ヘッダー、リクエスト本文を指定できるため、柔軟性が高く、さまざまなシナリオで使用できます。

Couchbase N1QL の JavaScript UDF を使用すると、N1QL クエリの一部として実行できるカスタム ロジックを記述できます。このように、N1QL の組み込み関数では実現できない複雑な操作を JavaScript コードを記述することで実行できるため、非常に便利です。

JavaScript UDF

Couchbase N1QL で JavaScript UDF を使用する方法の例を次に示します。

 curl -v -X POST \ http://localhost:8093/evaluator/v1/libraries/mysamples \ -u Administrator:password \ -H 'content-type: application/json' \ -d 'function square(val) { \ return val * val; \ } CREATE FUNCTION square(val) LANGUAGE JAVASCRIPT AS "square" AT "mysamples"; SELECT square(5) as result;

この例では、単一のパラメーター val を受け入れ、その二乗値を返す square という名前の JavaScript UDF を作成します。

square 関数は CREATE FUNCTION ステートメントを使用して定義され、関数の JavaScript コードは $$ のペアで囲まれます。 LANGUAGE javascript オプションは、関数のコードが JavaScript で記述されることを指定します。

JavaScript UDF は、関数を呼び出して必要なパラメータを渡すことで、N1QL クエリで使用できます。この例では、square 関数を呼び出し、パラメータ値 5 を渡し、結果を result 変数に格納します。

JavaScript UDF 自体が N1QL ステートメントを発行してデータを操作できます。

 curl -v -X POST http://localhost:8093/evaluator/v1/libraries/p1 -u Administrator:password -H 'content-type: application/json' -d 'function ptc1(a, b) { var qi0 = START TRANSACTION; var acc = []; for (const row of qi0) { acc.push(row); } var qi1 = INSERT INTO b VALUES(UUID(), {"radius": $a, "area": $b}) RETURNING meta().id,* ; for (const row of qi1) { acc.push(row); } var a2 = a * a; var b2 = b * b; var qi2 = INSERT INTO b VALUES(UUID(), {"radius": $a2, "area": $b2}) RETURNING meta().id,* ; for (const row of qi2) { acc.push(row); } var qi9 = COMMIT ; for (const row of qi9) { acc.push(row); } return acc; }'

JavaScript UDF と CURL() 関数の違い

Couchbase N1QL の JavaScript UDF は、次の点で CURL() 関数と異なります。

1. CURL() 関数は外部サービスへの HTTP リクエストを行い、Web からデータを取得するために使用されます。一方、JavaScript UDF を使用すると、JavaScript でカスタム ロジックを記述し、それを N1QL クエリの一部として実行できます。

2. JavaScript 自体が CURL() 関数を呼び出すことができます。

さらに、CURL() 関数は外部サービスからデータを返しますが、JavaScript UDF は数値、文字列、オブジェクト、配列など、JavaScript で表現できる任意の値を返すことができます。

要約すると、Couchbase N1QL の JavaScript UDF は非常に強力で、JavaScript でカスタム ロジックを記述することで N1QL の機能を拡張します。柔軟性が高く、組み込みの N1QL 関数では不可能な複雑な操作を実行するために使用できます。

JavaScript UDF と CURL() 関数の使用

Couchbase N1QL から OpenAI の ChatGPT を呼び出すには、CURL() 関数または JavaScript UDF を使用します。 2 つのメソッドには異なる構文があり、以下で簡単に説明します。

CURL() 関数を使用して Couchbase N1QL から ChatGPT を呼び出す構文は次のとおりです。

 SELECT CURL("https://api.openai.com/v1/engines/davinci/completions", { "request": "POST", "headers": [ "Authorization: Bearer ChangeThisToYourKey", "Content-Type: application/json" ], "data": '{ "prompt": "Hello. How are you doing today?", "temperature": 0.9, "max_tokens": 200 }' }) AS result ;

この例では、CURL() 関数は ChatGPT の OpenAI API エンドポイントに POST リクエストを送信します。

headers オプションはコンテンツ タイプを application/json に設定し、data オプションは ChatGPT、温度、生成するトークンの最大数などのヒントを含むリクエスト ペイロードを指定します。

API からの応答は、応答変数に保存されます。

Couchbase N1QL から ChatGPT を呼び出す別の方法は、JavaScript UDF を使用することです。 JavaScript UDF を使用して Couchbase N1QL から ChatGPT を呼び出すための構文は次のとおりです。

 curl -v -X POST http://localhost:8093/evaluator/v1/libraries/cglib -u Administrator:password -d 'function chatGPT3(prompt) { var chaturl = "https://api.openai.com/v1/engines/davinci/completions" dstr = "{\"prompt\": \"" + prompt + "\",\"temperature\": 0.5 , \"max_tokens\": 200}" var options = { "request" : "POST", headers: [ "Authorization: Bearer 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", "Content-Type: application/json" ], "data": dstr }; var query = SELECT CURL($chaturl, $options); var acc = []; for (const row of query) acc.push(row); return acc; }'

cbq シェルで、次の操作を行います。

 DROP FUNCTION chatGPT3; CREATE FUNCTION chatGPT3(prompt) language javascript as "chatGPT3" at "cglib"; select chatGPT3("Write an essay on Lincoln.")

クエリ結果は次のとおりです。

 cbq> select chatGPT3("Write an essay on Lincoln."); { "requestID": "6acb9a20-93f0-41c2-bdc4-fe28107d85a9", "signature": { "$1": "json" }, "results": [ { "$1": [ { "$1": { "choices": [ { "finish_reason": "length", "index": 0, "logprobs": null, "text": "\n\n“Lincoln,” wrote Carl Sandburg, “was a self-made man in the best sense of the word.”\n\nWhat does Sandburg mean by this statement?\n\nWhat advantages did Lincoln have in his youth?\n\nWhat disadvantages did he have?\n\nWhat events from his youth helped to make him a self-made man?\n\nWhat events from his youth helped to make him a self-made man?\n\nWhat events from his youth helped to make him a self-made man?\n\nWhat events from his youth helped to make him a self-made man?\n\nWhat events from his youth helped to make him a self-made man?\n\nWhat events from his youth helped to make him a self-made man?\n\nWhat events from his youth helped to make him a self-made man?\n\nWhat events from his youth helped to make him a self-made man?\n\n" } ], "created": 1675310533, "id": "cmpl-6fL5Zu1MGjNorxBOwyg3H1ODzzjSD", "model": "davinci", "object": "text_completion", "usage": { "completion_tokens": 200, "prompt_tokens": 6, "total_tokens": 206 } } } ] } ], "status": "success", "metrics": { "elapsedTime": "7.179456323s", "executionTime": "7.179347355s", "resultCount": 1, "resultSize": 1537, "serviceLoad": 1 } } cbq>

chatGPTが実際に書き込むのは

"text": "\n\n“Lincoln,” wrote Carl Sandburg, “was a self-made man in the best sense of the word.” What does Sandburg mean by this statement? What advantages did Lincoln have in his youth? What disadvantages did he have? What events from his youth helped to make him a self-made man? What events from his youth helped to make him a self-made man? What events from his youth helped to make him a self-made man? What events from his youth helped to make him a self-made man?

この例では、プロンプト パラメータを受け入れる chatGPT という名前の JavaScript UDF を作成します。その JavaScript コードは、リクエスト ライブラリを使用して、ChatGPT の OpenAI API エンドポイントに POST リクエストを送信します。リクエストのオプションには、URL、メソッド、ヘッダー、リクエスト ペイロードが含まれます。

API 呼び出しを行うと、API からの応答が response 変数に保存されます。次に、UDF は、chatGPT 関数を呼び出して必要なパラメータを渡すことで、N1QL クエリで使用できる応答を返します。

JavaScript UDF と CURL() 関数の制限

CURL() 関数を使用し、JavaScript UDF を介して Couchbase N1QL から ChatGPT を呼び出すと、アプリケーションに多くの利点がもたらされますが、これらのアプローチを使用する場合は、いくつかの重要な点に留意する必要があります。

CURL() 関数の制限:

1. N1QL の CURL() 関数は、GET および POST リクエストの作成に制限されています。 PUT や DELETE などの他の種類のリクエストを行う必要がある場合は、JavaScript UDF を使用する必要があります。

2. CURL() 関数は同期的であり、応答が受信されるまで N1QL クエリをブロックします。特に応答が大きい場合や応答が遅い場合には、パフォーマンスに影響する可能性があります。

データサイズの制限:

1. CURL() 関数と JavaScript UDF には、渡したり受信したりできるデータの量に制限があります。したがって、データが非常に大きい場合は、データをチャンクに分割するか、複数のリクエストを行う必要がある場合があります。

2. ChatGPT の応答も大きくなる可能性があるため、統合を計画する際にはこの点を考慮してください。応答全体を直接メモリにロードするのではなく、応答をチャンク単位で処理し、結果を Couchbase に保存することもできます。

安全上の注意:

1. CURL() 関数または JavaScript UDF を使用して ChatGPT にリクエストを行うと、ネットワークは API キーやその他の資格情報などの機密情報を渡します。情報のセキュリティを考慮し、必要に応じて暗号化または保護する措置を講じてください。

2. ChatGPT の応答には機密情報も含まれる可能性があるため、Couchbase に保存されているデータを保護し、不正アクセスから保護することが重要です。

これらの制限と考慮事項を念頭に置くことで、CURL() 関数と JavaScript UDF を使用して ChatGPT を Couchbase N1QL に正常に統合できるようになります。

結論

ChatGPT の機能は素晴らしいです。 ChatGPT はコード生成面ではまだ改善の余地がありますが、そこにはまったく新しい世界があります。

<<:  厦門大学、インテル、DJI による共同プロジェクトで、オンライン動画からゼロショット画像マッチングの大規模モデルを学習

>>: 

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

人材に余裕がないわけではありませんが、AI 検査の方がコスト効率が良いのです。

著者 | Tu Chengyeレビュー | Chonglou石炭、電力、化学などの多くの産業では、安...

...

AIoT: 次世代コンバージェンスの利点と用途を理解する

人工知能 (AI) とモノのインターネット (IoT) は、過去 10 年間を定義してきました。ビッ...

新キングクロード3実戦テスト!すべての能力が素晴らしく、麻雀もプレイできます。確かに GPT-4 よりも優れています。

OpenAI の無敵という神話は崩れ去った。 Claude 3 (中国語対応)が一夜にして発売され...

...

教育ロボットとベテラン教師の戦い:学習の効率を高めるのはどちらでしょうか?

[51CTO.com]地理的制約と教師の制約により、中国では質の高い教育資源が常に極めて不足してい...

知能ロボットは世界経済を書き換えるだろうが、全てが良いわけではない

高度に自動化された社会では、人々の反復的な労働のレベルは最小限に抑えられています。人件費が高い分野で...

業界アプリケーション: ドローンに正確な測位技術を提供するにはどうすればよいでしょうか?

背景ステータス:科学技術の発展に伴い、無人航空機であるドローンは、一定の高さから地上の映像を取得でき...

MITとワトソン研究所のチームが、ジェスチャーを見るだけで音楽を完璧に再現する最新のAIを発表

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

GPT-4Vがロボットの頭脳として機能すると、AIで計画を立てることができなくなる可能性があります

GPT-4V はすでに、Web サイトのコード設計やブラウザの制御に役立っています。これらのアプリケ...

超実用的画像超解像再構成技術の原理と応用

[51CTO.com からのオリジナル記事] コンピューターで何か面白いものを見つけたときにスクリー...

2018 年までに世界を変える 9 つのテクノロジーをご紹介します。

編集者注: 有名なベストセラー作家のバーナード・マー氏は最近、「2018 年に私たちの世界を定義する...

教師あり学習、教師なし学習、強化学習とは何ですか?ついに誰かが明らかにした

[[337832]] 01 用語このセクションでは、機械学習の概要とその 3 つの分類 (教師あり学...

人工知能が中小企業にもたらす5つのメリット

[[328993]] 【51CTO.com クイック翻訳】 AI 市場のトレンドはどのくらいの速さで...