国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用Java和ChatGPT Api來創(chuàng)建自己的大模型聊天機器人

這篇具有很好參考價值的文章主要介紹了使用Java和ChatGPT Api來創(chuàng)建自己的大模型聊天機器人。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

什么是大模型?

大型語言模型(LLM)是一種深度學習模型,它使用大量數(shù)據(jù)進行預訓練,并能夠通過提示工程解決各種下游任務。LLM 的出發(fā)點是建立一個適用于自然語言處理的基礎模型,通過預訓練和提示工程的方式實現(xiàn)模型在新的數(shù)據(jù)分布和任務上的強大泛化能力。LLM 旨在解決自然語言處理中的一些關鍵問題,例如文本分類、命名實體識別、情感分析等。
LLM 由多個主要組件組成,包括圖像編碼器、提示編碼器和掩碼解碼器。圖像編碼器主要用于對輸入圖像進行編碼,以便將其轉換為可供模型處理的格式。提示編碼器用于將不同類型的提示(如點、框、文本和掩碼)表示為模型可以理解的形式。掩碼解碼器則將圖像編碼器和提示編碼器生成的嵌入映射到分割掩碼。
LLM 的訓練過程涉及多個步驟,包括預訓練、提示工程和微調。在預訓練階段,模型在大量無監(jiān)督數(shù)據(jù)上進行訓練,以學習自然語言處理中的基本模式和規(guī)律。在提示工程階段,模型根據(jù)特定任務的提示進行調整,以使其能夠解決該任務。最后,在微調階段,模型在少量標注數(shù)據(jù)上進行訓練,以進一步優(yōu)化其性能。
LLM 的優(yōu)點在于其強大的泛化能力和適用性。由于它們在大量數(shù)據(jù)上進行預訓練,因此它們可以輕松地適應新的數(shù)據(jù)集和任務,并且只需要很少的微調數(shù)據(jù)。此外,LLM 還可以應用于多種自然語言處理任務,例如文本分類、命名實體識別、情感分析等。
然而,LLM 也存在一些缺點。首先,由于它們在大量數(shù)據(jù)上進行預訓練,因此它們需要大量的計算資源和時間。其次,LLM 的訓練和部署可能需要大量的內存和計算資源,這可能會限制它們的實際應用。

上面一段話是我詢問大模型后,大模型給出的一個回答。

大模型英文縮寫LLM,全程是Large Language Model(大語言模型)。根據(jù)我的理解,大模型就是參數(shù)量規(guī)模很大的一個語言模型。ChatGPT等大模型的體驗效果就是,能很好地進行對話交互,感覺它是一個很聰明“機器人”,有時候甚至根本就感覺不出來它是“機器人”。

這篇文章我們就來介紹一下如何使用chatGPT的Api來構建一個屬于自己的大模型聊天機器人。

ChatGPT Api簡析

首先來介紹一下chatGPT該如何使用。OpenAI除了給提供了網(wǎng)頁的直接交互體驗外,還提供了一套完整的API接口,這也是我們能夠制造自己機器人的前提。使用這套API接口就能實現(xiàn)和OpenAI能力一樣的效果了。這里貼一個需要魔法的官網(wǎng):官網(wǎng)API文檔 和一個不需要的國內網(wǎng)站:API文檔中文版。我們重點介紹其中的Chat、Embeddings兩個接口。

建議:如果對chatGPT的api比較熟悉,可以跳過這一部分?;蛘咴跒g覽后面的代碼部分感到困惑時再返回來參考。

Chat

這個是聊天接口的url:https://api.openai.com/v1/chat/completions

參數(shù)格式是這樣的:

{
 "model": "gpt-3.5-turbo",
 "messages": [{"role": "user", "content": "Hello!"}]
}

響應體格式是這樣的:

{
 "id": "chatcmpl-123",
 "object": "chat.completion",
 "created": 1677652288,
 "choices": [{
 "index": 0,
 "message": {
 "role": "assistant",
 "content": "  Hello there, how may I assist you today?",
    },
 "finish_reason": "stop"
  }],
 "usage": {
 "prompt_tokens": 9,
 "completion_tokens": 12,
 "total_tokens": 21
  }
}

對于請求參數(shù)來說,需要在其中的messages里添加內容。role參數(shù)描述的是角色,分為system(用于系統(tǒng)指示,比如指示chat gpt要扮演什么角色。此時應該用這個參數(shù)。)、assistant(chat gpt返回消息的標識,說明這個message是chat gpt響應的。)、user(一般用戶進行對話時應該使用這個角色參數(shù)。)和function(下文分析)。content里要放的內容文本,這里就不再多解釋了。

對于響應體來說,前面的一堆都可以忽略,重點還是看messages節(jié)點,我們只要取到了messages里的消息就夠了。

function call

有些時候我們除了和大模型交互外,還希望來點別的東西。比如,我自己數(shù)據(jù)庫里的一些內容,這個大模型總沒辦法知道的吧?例如,我有一些客戶的訂單信息,希望當客戶在和大模型對話的之后能查到自己的訂單相關的內容,這時候要怎么做呢?

首先能確定的是,肯定需要借助外界的力量。我們希望當用戶詢問訂單相關信息時,大模型能夠根據(jù)我們提供的信息,去我們的數(shù)據(jù)庫中進行查詢操作。但是我需要聲明一下,讓大模型去數(shù)據(jù)庫查詢是做不到的。大模型只是相當于一個大腦,單純有腦子的話,既不能吃飯也不能走路。但是呢,腦子可以下達指令??!我們希望大模型在識別到客戶想要查詢訂單信息時,告訴我們一下就行,然后我們自己查詢完數(shù)據(jù)庫,再把相關的信息告訴大模型,這樣不就簡介地解決了這個問題嗎。

在介紹我們的主角function call之前,先說一下如果沒有它該怎么做:我們會給出一個system指令,“當客戶想要查詢訂單信息時,詢問客戶的姓名和訂單號”。我們通過客戶的姓名和訂單號就能確認出客戶的訂單信息了。然后這個時候大模型會主動地去詢問客戶的姓名和訂單號。當獲取到這兩個信息以后,我們再給出一個system指令“將姓名和訂單號按照json格式返回,示例如下:{“name”: “張三”, “orderNo”: “0001”}”。這樣,我們就能獲取到大模型返回的格式化數(shù)據(jù)了(想想如果不是格式化的數(shù)據(jù)會怎么樣?即便正確返回了信息,我們也根本沒有辦法去識別)。隨后我們將json數(shù)據(jù)進行解析,然后去數(shù)據(jù)庫里查詢,再將查詢到的結果給出一個system指令:“客戶的訂單信息是:買了xxx,在xxx時間,發(fā)貨地址是xxx”。到這里,大模型就完成了與客戶的“外界交流”。

上面的過程一看就是很麻煩的,好在OpenAI給我們開放出了這個function call接口。用function call將上面的例子實現(xiàn)一下就是:

 {
        "name": "findOrder",
        "description": "通過客戶的姓名和訂單號,查詢客戶訂單的詳細信息。",
        "parameters": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "客戶的姓名"
                },
                "orderNo": {
                    "type": "number",
                    "description": "客戶的訂單號"
                }
            },
            "required": ["name", "orderNo"],
        },
    }

大腦需要借助這個函數(shù)調用來得到這個能力。其中,description是對函數(shù)調用的說明,告訴大模型該什么時候來執(zhí)行這個函數(shù)調用。properties節(jié)點下的內容是我們要獲取的具體參數(shù),如nameorderNo。這兩個節(jié)點下的description是對參數(shù)的說明。是不是和我們開發(fā)語言中的函數(shù)調用非常的相似?只是將參數(shù)和函數(shù)的作用的注釋告訴了大模型。當大模型根據(jù)函數(shù)的描述,覺得需要的時候就會進行執(zhí)行,返回:

{
  "role": "assistant",
  "function_call": {
    "name": "findOrder",
    "arguments": "{"name": "張三", "orderNo": "0001"}"
  }
}

注意哦,這兩個屬性應該是大模型詢問用戶后得到的信息。

Embeddings

再介紹一個重量級接口Embeddings。

這個接口是輸入一段文本,輸出這段文本的向量。使用這個api只能用指定的模型,比如text-embedding-ada-002,這個是專門用來文本轉向量的模型。返回結果類似這樣的:

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "embedding": [
        0.018990106880664825,
        -0.0073809814639389515,
        .... (1024 floats total for ada)
        0.021276434883475304,
      ],
      "index": 0
    }
  ],
  "model": "text-similarity-ada:002"
}

那么什么是向量呢?其實就是字面意思,向量。我們可以把文本按照一定的規(guī)則在三維空間中表示,那么每個文本就都有它在這個規(guī)則下對應的向量。比如我要定義:”你好“的向量是[1,0,0],”你好啊“的向量是[1,0,1],比你好多一個啊。當然實際要比這個復雜的多,通過api返回的結果也可見一斑。不過通俗的理解,就是將一段文本用數(shù)字進行表示了。有了這個數(shù)字,我們就可以根據(jù)文本在空間中向量距離由多進來判斷這兩個文本有多相似了。

制作機器人

有了上面的基礎就可以動手制作自己的聊天機器人了。上面的api介紹過了,再介紹一個java封裝的api包:github地址。
使用maven導入:

   <dependency>
    <groupId>com.theokanning.openai-gpt3-java</groupId>
    <artifactId>{api|client|service}</artifactId>
    <version>version</version>       
   </dependency>

使用grdle導入:
implementation 'com.theokanning.openai-gpt3-java:<api|client|service>:<version>

使用起來呢也是非常簡單,配置好你的api key就可以直接用了。只需要調用chat completion接口就能實現(xiàn)自己的聊天機器人了。

上下文

攜帶上下文的方式也很簡單,只需要將自己要輸入的和大模型返回的都放入那個List<ChatMessage>就可以了。不過需要注意一點,不同的模型允許攜帶的最大上下文是不同的,對于gpt3.5-turbo只能攜帶4096個token,這就意味著不能將所有的歷史上下文都帶上。并且,攜帶越多的上下文,資費也會越多。

由上下文問題,我們想到了一個解決辦法,就是使用前面提到的向量。通常來說,即便用戶需要使用上下文,也一般都在3-5論歷史對話中選取。這樣,我們首先想到的是只攜帶3-5論歷史,對于多余的內容就按時間先后順序刪除掉。但是還有另外一種情況,比如我希望讓大模型結合我給出的文檔內容,我當然不想每次對話都將文檔里的內容全部攜帶上,并且對于較長的文檔來說,也沒有辦法全部攜帶。另外,對于長文檔提問也具有局部性,往往只會用到文檔的一小部分內容。

使用向量就能很好的解決這個問題。首先將我們的文檔內容調用向量接口進行向量化,然后存入到我們的數(shù)據(jù)庫中。當想要問問題時,先將問題向量化,然后去庫中對比,取取最接近的幾條數(shù)據(jù)交給大模型參考,再返回我們對應問題的答案。

向量數(shù)據(jù)庫

直接使用關系型數(shù)據(jù)庫是很難來保存向量的,因此我們考慮直接使用向量數(shù)據(jù)庫。這種專門存儲向量的數(shù)據(jù)庫不僅能提供存儲的功能,一般還有比較相似的功能。比如我們可以讓它返回庫中和一段指定文本最相似的前三個,并且必須高于某個分數(shù)。

向量數(shù)據(jù)庫有很多,這里我們介紹一下milvus,這是它的地址。安裝等步驟就不再介紹了,按照文檔的步驟做就可以了,具體的使用方式在文檔里也有比較詳細的說明。

安裝完后,我們就可以是用它來實現(xiàn)我們上面提到了存儲向量的功能l。

更多場景介紹

其實我們算是介紹了大模型的兩個應用場景:一個是作為聊天機器人,需要注意的是要想連續(xù)對話就需要攜帶上下文。另外一個是文檔的問答助手,需要用到向量數(shù)據(jù)庫來作為倉庫存儲我們的文檔內容。

除此之外,聊天型的大模型還可以有很多的應用呢,比如能夠進行文本內容總結,文本信息提取,文章摘要生成等等。總之,大模型對于語言處理能力還是很強的??梢园l(fā)揮一些想象力來將大模型融入到生活中,提高我們的工作效率和提供生活便捷。

擴展閱讀

文章主要是介紹的使用ChatGPT的api來完成,我們還可以部署自己的大模型來實現(xiàn)前面提到的場景?,F(xiàn)在有一些開源的大模型,能以“比較”低的成本繼續(xù)本地化部署使用。雖然由于參數(shù)量較小,無法媲美ChatGPT,但總歸是數(shù)據(jù)掌握在自己手里,而且有些場景下費用會更低。

目前比較流行開源的大模型有:

  • ChatGLM2 這是一個由清華大學聯(lián)合智譜AI開源的模型,github地址。
  • 通義千問 由阿里巴巴開源的大模型
  • Llama2 meta公司開源的大模型,不過對中文的支持較差
  • moss-moon 復旦大學根據(jù)流浪地球中moss的靈感起名,也是一個不錯的大模型

除了開源模型外,還有一些商業(yè)模型,比如科大訊飛的星火大模型,百度的文心一言等。感性的同學可以去網(wǎng)上搜一下,截至目前為止有一些還在內測階段,需要申請才可能允許使用。文章來源地址http://www.zghlxwxcb.cn/news/detail-662371.html

到了這里,關于使用Java和ChatGPT Api來創(chuàng)建自己的大模型聊天機器人的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 如何使用OpenAI API和Python SDK構建自己的聊天機器人

    如何使用OpenAI API和Python SDK構建自己的聊天機器人

    近日,OpenAI公司的ChatGPT模型走紅網(wǎng)絡。同時,OpenAI也推出了Chat API和gpt-3.5-turbo模型,讓開發(fā)者能夠更輕松地使用與ChatGPT類似的自然語言處理模型。 通過OpenAI API,我們可以使用gpt-3.5-turbo模型,實現(xiàn)多種任務,包括:撰寫電子郵件或其他文本內容,編寫Python代碼,創(chuàng)建對話代

    2024年02月01日
    瀏覽(48)
  • 【大模型AIGC系列課程 1-2】創(chuàng)建并部署自己的ChatGPT機器人

    獲取 openai api api-key https://platform.openai.com/account/api-keys 利用 python requests 請求 openai 參考 openai 接口說明:https://platform.openai.com/docs/api-reference/chat/create

    2024年02月11日
    瀏覽(37)
  • 如何訓練自己的大語言模型

    訓練大型語言模型的核心代碼通常涉及以下幾個關鍵部分: 數(shù)據(jù)準備: 加載和預處理文本數(shù)據(jù)。 分詞或標記化文本,將文本轉換為模型可接受的輸入形式。 構建數(shù)據(jù)集或數(shù)據(jù)加載器,以便在訓練過程中高效地加載和處理數(shù)據(jù)。 模型定義: 使用深度學習框架(如TensorFlow、

    2024年02月16日
    瀏覽(27)
  • 從頭開始用JAVA創(chuàng)建一個自己的簡單API并實現(xiàn)第三方調用

    從頭開始用JAVA創(chuàng)建一個自己的簡單API并實現(xiàn)第三方調用

    ????????相信大家對這個詞匯并不陌生,通俗來說API就是程序之間的接口,在學習和工作中經(jīng)常會調用別人的API,那么如果我們要做一個自己的API,要如何下手呢。本文將用Spring+JAVA編寫一個簡單的API,過程可供初學者參考。 ? ? ? ? 為了顧及完全沒有經(jīng)驗的小白(比如我

    2024年02月10日
    瀏覽(20)
  • 百度文心一言(千帆大模型)聊天API使用指導

    百度文心一言(千帆大模型)聊天API使用指導

    開篇不得不吐槽下百度,百度智能云平臺首頁跳轉千帆大模型平臺的按鈕太多了,不同按鈕跳轉不同的子頁面,不熟悉的,能把人找懵。入口太多,就導致用戶不知道從何開始。本文就從一個前端開發(fā)人員的角度,教大家快速使用上文心一言(千帆大模型)API。 直接進千帆控

    2024年02月04日
    瀏覽(30)
  • 使用uniapp做ai開發(fā),太簡單了。無論是chatgpt還是國內的大語言模型,都可以隨意使用

    目錄 uni-ai是什么 1、聚合 2、prompt輔助 3、私有數(shù)據(jù)訓練 4、現(xiàn)成開源項目 如何使用uni-ai 1、通過api調用 2、獲取LLM實例 3、對話 4、簡單示例 5、流式響應 其他說明 ?費用 常見用途場景 做小程序開發(fā)的應該都知道uniapp,這是Dcloud推出的一款跨端開發(fā)框架。是一個使用?Vue.js?開

    2024年02月13日
    瀏覽(18)
  • 律師使用ChatGPT 進行法律文獻檢索提交了錯誤信息;李開復表示,威力強大的大模型將徹底變革人工智能

    律師使用ChatGPT 進行法律文獻檢索提交了錯誤信息;李開復表示,威力強大的大模型將徹底變革人工智能

    ?? 一名律師使用ChatGPT 進行法律文獻檢索提交了錯誤信息 近日,一名律師在法庭案件中使用聊天機器人 ChatGPT 進行法律文獻檢索,結果提交了錯誤信息, 揭示了人工智能在法律領域的潛在風險,包括誤傳錯誤信息。 該事件引發(fā)了法律界對于人工智能工具在法律研究中適當使

    2024年02月06日
    瀏覽(29)
  • 快速訓練自己的大語言模型:基于LLAMA-7B的lora指令微調

    快速訓練自己的大語言模型:基于LLAMA-7B的lora指令微調

    前言: 系統(tǒng):ubuntu 18.04 顯卡:A100-80G(蹭的,嘿嘿~) (本次主要記錄如何快速進行大模型的指令微調) 地址:https://github.com/Lightning-AI/lit-llama 切換到工程目錄 使用pip安裝依賴庫 (當然,這里可能會遇到網(wǎng)絡問題,安裝不了lightning) 可使用以下方式安裝: 下載lightning工程

    2024年02月11日
    瀏覽(24)
  • 無需 GPU 服務器,借助 OpenRouter 零成本搭建自己的大模型助手

    無需 GPU 服務器,借助 OpenRouter 零成本搭建自己的大模型助手

    大型模型的出現(xiàn)為許多領域帶來了革命性的變化,從自然語言處理到計算機視覺,甚至是醫(yī)學和金融領域。然而,對于許多開發(fā)者來說,使用一些開源的模型進行實驗和應用卻是一個挑戰(zhàn),因為它們通常需要昂貴的硬件資源來運行。大多數(shù)情況下,使用這些模型需要擁有一臺

    2024年03月18日
    瀏覽(31)
  • ChatGPT使用拓展資料:AI大模型之美 -客戶服務、聊天機器人和情感分析

    本文將介紹一款基于OpenAI API的人工智能(AI)應用程序,該應用程序可以用于客戶服務、聊天機器人和情感分析等任務。該應用程序使用Python編程語言和OpenAI API實現(xiàn),可以自動化回答用戶的問題,并根據(jù)用戶的輸入生成智能響應。 OpenAI是一家致力于人工智能研究的公司,其

    2024年02月13日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包