自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL可以做ChatGPT嗎?答案是YES!

人工智能
ChatGPT的響應(yīng)也可能很大,因此在規(guī)劃集成時(shí)要考慮到這一點(diǎn)。可能需要分塊處理響應(yīng)并將結(jié)果存儲(chǔ)在Couchbase,而不是直接將整個(gè)響應(yīng)加載到內(nèi)存中。

ChatGPT儼然已經(jīng)風(fēng)靡全球。今天我們的問(wèn)題是,SQL可以做ChatGPT嗎?

一起來(lái)看看嗎。

Couchbase N1QL,又名SQL++,是一種類似SQL的語(yǔ)言,用于查詢存儲(chǔ)在Couchbase中的JSON數(shù)據(jù)。

Couchbase N1QL中的CURL()函數(shù)可向外部服務(wù)發(fā)出HTTP請(qǐng)求,因而可用于通過(guò)向ChatGPT的API端點(diǎn)發(fā)送請(qǐng)求來(lái)調(diào)用ChatGPT。

Couchbase中的JavaScript UDF是用JavaScript編寫(xiě)的函數(shù),不但可以作為N1QL查詢的部分執(zhí)行,還可用于通過(guò)向ChatGPT的API端點(diǎn)發(fā)出HTTP請(qǐng)求來(lái)調(diào)用ChatGPT。

要連接ChatGPT與Couchbase N1QL,我們需要知道ChatGPT的API端點(diǎn)以及訪問(wèn)它所需的身份驗(yàn)證憑據(jù)。

使用CURL()函數(shù)從Couchbase N1QL調(diào)用ChatGPT的語(yǔ)法如下所示:

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 ;

響應(yīng)如下:

[
  {
    "result": {
      "choices": [
        {
          "finish_reason": "length",
          "index": 0,
          "logprobs": null,
          "text": " Where Swift sneakily commands, “…h(huán)ere you go / I wrote it on my phone so you could Google it,” you should write: “…h(huán)ere’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 “l(fā)ambda-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
      }
    }
  }
]

要將參數(shù)傳遞給ChatGPT,我們可以修改上述示例中的數(shù)據(jù)字段。如:

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

接下來(lái)我再具體展開(kāi)講講Couchbase N1QL和CURL()。

Couchbase N1QL

Couchbase N1QL(Non-First Normal Form Query Language)是一種類似SQL的語(yǔ)言,用于查詢存儲(chǔ)在Couchbase中的JSON數(shù)據(jù)。它提供了用于轉(zhuǎn)換和操作數(shù)據(jù)的各種函數(shù),包括CURL()函數(shù)。

CURL()函數(shù)

CURL()函數(shù)允許我們從N1QL查詢向外部服務(wù)發(fā)出HTTP請(qǐng)求。這對(duì)于集成Couchbase與其他系統(tǒng)(如web API)或獲取web數(shù)據(jù)以便在Couchbase中進(jìn)一步處理都非常有用。

在 Couchbase N1QL中使用CURL()函數(shù)的語(yǔ)法如下:

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

CURL()函數(shù)向URL發(fā)送GET請(qǐng)求,請(qǐng)求返回用戶sitaramv 的存儲(chǔ)庫(kù)。

函數(shù)的結(jié)果存儲(chǔ)在響應(yīng)變量list中,之后可使用其他N1QL函數(shù)進(jìn)一步處理。

<options>對(duì)象可以包含多個(gè)屬性,例如用于指定HTTP請(qǐng)求的方法(GET、POST、PUT等)、用于設(shè)置自定義HTTP頭信息以及用于請(qǐng)求發(fā)送的數(shù)據(jù)。

下面是如何使用CURL()函數(shù)將數(shù)據(jù)發(fā)布到外部的示例

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()函數(shù)向URL發(fā)送POST請(qǐng)求,請(qǐng)求主體中包含JSON有效負(fù)載。

自定義頭Content-Type: application/json設(shè)置請(qǐng)求的數(shù)據(jù)為JSON格式。

Couchbase N1QL的CURL()函數(shù)提供了一種將Couchbase連接到外部系統(tǒng)并從web獲取數(shù)據(jù)的便捷方法。由于能夠指定HTTP方法、頭和請(qǐng)求體,因而具有很大的靈活性,可用于各種方案。

Couchbase N1QL的JavaScript UDF允許我們編寫(xiě)自定義邏輯,然后可將其作為N1QL查詢部分執(zhí)行。這樣我們就可以通過(guò)編寫(xiě)JavaScript代碼來(lái)執(zhí)行使用內(nèi)置N1QL函數(shù)無(wú)法實(shí)現(xiàn)的復(fù)雜操作,非常便利。

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;

示例中創(chuàng)建了一個(gè)名為square的JavaScript UDF,該UDF接受單個(gè)參數(shù)val并返回其平方值。

square函數(shù)是使用CREATE FUNCTION語(yǔ)句定義的,該函數(shù)的JavaScript代碼包含在一對(duì)$$中。LANGUAGE javascript選項(xiàng)指定函數(shù)的代碼用JavaScript編寫(xiě)。

JavaScript UDF可以通過(guò)調(diào)用函數(shù)并傳遞必要的參數(shù)從而在N1QL查詢中使用。此示例調(diào)用square函數(shù)并傳入?yún)?shù)值5,并將結(jié)果存儲(chǔ)在result變量中。

JavaScript UDF本身可以發(fā)出N1QL語(yǔ)句來(lái)對(duì)數(shù)據(jù)進(jìn)行操作。

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()函數(shù)的區(qū)別

Couchbase N1QL中的JavaScript UDF與CURL()函數(shù)不同在于:

1.CURL()函數(shù)用于向外部服務(wù)發(fā)出HTTP請(qǐng)求并從web檢索數(shù)據(jù),而JavaScript UDF允許用JavaScript編寫(xiě)自定義邏輯并將其作為N1QL查詢的一部分執(zhí)行。

2.JavaScript本身可以調(diào)用CURL()函數(shù)。

此外,CURL()函數(shù)從外部服務(wù)返回?cái)?shù)據(jù),而JavaScript UDF可以返回任何可以用JavaScript表示的值,例如數(shù)字、字符串、對(duì)象、數(shù)組等。

總之,Couchbase N1QL中的JavaScript UDF非常強(qiáng)大,通過(guò)JavaScript編寫(xiě)自定義邏輯擴(kuò)展了N1QL的功能,具有很大的靈活性,可用于執(zhí)行內(nèi)置N1QL函數(shù)無(wú)法實(shí)現(xiàn)的復(fù)雜操作。

JavaScript UDF與CURL()函數(shù)的用法

從Couchbase N1QL調(diào)用OpenAI的ChatGPT,可以使用CURL()函數(shù)或JavaScript UDF來(lái)實(shí)現(xiàn)。兩種方法語(yǔ)法不同,下面簡(jiǎn)單說(shuō)明一下。

使用CURL()函數(shù)從Couchbase N1QL調(diào)用ChatGPT的語(yǔ)法如下:

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()函數(shù)向ChatGPT的OpenAI API端點(diǎn)發(fā)出POST請(qǐng)求。

headers選項(xiàng)將Content類型設(shè)置為application/json,data選項(xiàng)指定請(qǐng)求負(fù)載,包括ChatGPT、溫度和要生成的最大令牌數(shù)這些提示。

API的響應(yīng)存儲(chǔ)在響應(yīng)變量中。

從Couchbase N1QL調(diào)用ChatGPT的另一種方法是使用JavaScript UDF。使用JavaScript UDF從Couchbase N1QL調(diào)用ChatGPT的語(yǔ)法如下:

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 shell 中,執(zhí)行以下操作:

DROP FUNCTION chatGPT3;
CREATE FUNCTION chatGPT3(prompt) language javascript as "chatGPT3" at "cglib";

select chatGPT3("Write an essay on Lincoln.")

查詢結(jié)果如下:

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實(shí)際寫(xiě)的內(nèi)容是

"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?

此示例創(chuàng)建了一個(gè)名為chatGPT的JavaScript UDF,接受prompt參數(shù)。其JavaScript代碼使用請(qǐng)求庫(kù)向ChatGPT的OpenAI API端點(diǎn)發(fā)出POST請(qǐng)求。請(qǐng)求的選項(xiàng)包括URL、method、頭和請(qǐng)求有效負(fù)載。

進(jìn)行API調(diào)用后,來(lái)自API的響應(yīng)將存儲(chǔ)在響應(yīng)變量中。然后,UDF返回響應(yīng),我們可以通過(guò)調(diào)用chatGPT函數(shù)并傳遞必要的參數(shù)在N1QL查詢中使用該響應(yīng)。

JavaScript UDF與CURL()函數(shù)的限制

雖然,使用CURL()函數(shù)以及通過(guò)JavaScript UDF從Couchbase N1QL調(diào)用ChatGPT可以為應(yīng)用程序提供很多好處,但是,使用這些方法時(shí)要記住一些重要事項(xiàng):

CURL()函數(shù)的限制:

1.N1QL中的CURL()函數(shù)僅限于發(fā)出GET和POST請(qǐng)求。如果需要發(fā)出其他類型的請(qǐng)求,例如PUT或DELETE,則需要使用JavaScript UDF。

2.CURL()函數(shù)是同步的,在收到響應(yīng)之前將阻止N1QL查詢。這可能會(huì)影響性能,尤其是在響應(yīng)較大或較慢的情況下。

數(shù)據(jù)大小的限制:

1.CURL()函數(shù)和JavaScript UDF對(duì)可以傳遞或接收的數(shù)據(jù)量都有限制。因此可能需要將數(shù)據(jù)分塊,如果數(shù)據(jù)非常大,則需要發(fā)出多個(gè)請(qǐng)求。

2.ChatGPT的響應(yīng)也可能很大,因此在規(guī)劃集成時(shí)要考慮到這一點(diǎn)。可能需要分塊處理響應(yīng)并將結(jié)果存儲(chǔ)在Couchbase,而不是直接將整個(gè)響應(yīng)加載到內(nèi)存中。

安全注意事項(xiàng):

1.使用CURL()函數(shù)或JavaScript UDF向ChatGPT發(fā)出請(qǐng)求時(shí),網(wǎng)絡(luò)將傳遞敏感信息,例如API密鑰和其他憑據(jù)。考慮信息的安全性,并在必要時(shí)采取措施對(duì)其進(jìn)行加密或保護(hù)。

2.ChatGPT的響應(yīng)也可能包含敏感信息,因此保護(hù)存儲(chǔ)在Couchbase中的數(shù)據(jù)并保護(hù)其免受未經(jīng)授權(quán)的訪問(wèn)非常重要。

牢記這些限制和注意事項(xiàng),可以確保我們順利使用CURL()函數(shù)和JavaScript UDF成功集成ChatGPT到Couchbase N1QL。

結(jié)語(yǔ)

ChatGPT的能力令人印象深刻。雖然ChatGPT在代碼生成方面仍需改進(jìn),但這是一個(gè)全新的世界。

責(zé)任編輯:武曉燕 來(lái)源: 前端新世界
相關(guān)推薦

2023-09-21 15:05:12

ChatGPT搜索引擎

2023-02-13 23:15:31

ChatGPT聊天機(jī)器人人工智能

2016-12-06 12:48:32

開(kāi)源設(shè)計(jì)

2023-04-25 07:00:20

2023-06-25 09:51:03

ChatGPT平臺(tái)

2024-09-02 08:43:22

2024-01-24 18:55:56

ChatGPT聊天機(jī)器人

2023-01-03 13:04:34

ChatGPT

2022-12-08 08:16:59

ChatGPT開(kāi)源商業(yè)化

2019-07-09 13:37:14

VR按摩療養(yǎng)院

2019-07-24 15:33:55

大數(shù)據(jù)數(shù)據(jù)處理分析

2020-10-23 15:57:54

機(jī)器學(xué)習(xí)技術(shù)人工智能

2023-06-11 15:48:54

機(jī)器人ChatGPT

2023-02-03 08:46:46

2017-12-08 09:22:51

數(shù)據(jù)AI算法

2023-09-28 12:14:55

2023-03-01 09:39:05

2011-08-15 15:55:58

yes中文man

2023-03-03 13:50:55

GPT-3AI

2025-04-22 07:48:56

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)