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

AI 背后的原理是什么?如何搭建一個 AI 聊天機器人?

人工智能
本文,我們分析了幾種實現(xiàn)聊天機器人的方法,從傳統(tǒng)的方式到如今如日中天的大語言模型, 然后基于 Spring Boot 和 OpenAI的 API,實現(xiàn)了一個簡易的聊天機器人,搭建的過程很簡單。

AI無疑是當下最熱門的一個話題,不管你是不是做技術,多多少少都聽過它,很多人甚至都擔心自己的工作會被它取代,那么,AI的背后的原理是什么?為什么它會這么流行?這篇文章,我們通過搭建一個簡單的聊天機器人來了解 AI背后的秘密。

實現(xiàn)機器人的方式

實現(xiàn)的機器人的方式很多,這里我們列舉三類常見的實現(xiàn)方式:

1.預設答案

預設答案是指我們可以預設一些問題,然后給每個問題預先設置好答案,對于沒有預先設置好的問題,統(tǒng)一使用默認答案。比如公眾號里面的自動回復功能,如下圖:

預設答案是最簡單且最安全的一種實現(xiàn)方式,最簡單是因為它完全沒有什么技術含量,完全是一個關鍵字Map的機制。最安全是因為答案是預先配置好,完全可控,所以不管提問者提什么樣的問題,都不可能有涉x的問題。

2.常規(guī)算法

基于常規(guī)算法是指,根據(jù)用戶的輸入,需要分析其語義,然后作出合理的回答,常見的算法有決策樹、線性回歸等。

決策樹是一種用于分類和回歸的非參數(shù)模型,其基本思想是將數(shù)據(jù)集劃分為更小的子集,同時構建一個類似樹結構的決策模型。這個樹由節(jié)點(Node)和分支(Branch)組成:

  • 根節(jié)點(Root Node) :數(shù)據(jù)開始的地方,包含整個數(shù)據(jù)集。
  • 內(nèi)部節(jié)點(Internal Nodes) :根據(jù)某個特征進行數(shù)據(jù)的條件判斷分割。
  • 葉子節(jié)點(Leaf Nodes) :代表最終的決策結果或類別。

線性回歸是一種統(tǒng)計方法,用于建模目標變量和一個或多個自變量之間的線性關系。其目標是找到一個線性方程,使得預測值和實際值之間的誤差最小化。

3.大語言模型

大型語言模型(Large Language Models,LLMs)是非常大的深度學習模型,預先在海量數(shù)據(jù)上進行訓練,其底層的 Transformer(在 2017年由谷歌在論文“Attention Is All You Need”中首次提出)是一組神經(jīng)網(wǎng)絡,包括具有自注意力能力的編碼器和解碼器。編碼器和解碼器從文本序列中提取意義,并理解其中單詞和短語之間的關系。

LLMs是目前最為流行的一種方式,比如字節(jié)的豆包,F(xiàn)acebook的Chatbot,如 OpenAI 的 GPT-3、GPT-4、ChatGPT-4o,谷歌的 BERT 和 T5 等。下面是我和豆包的一段對話:

豆包MarsCode可以根據(jù)我的問題,分析我的語義,給出相當 nice的答案,給國產(chǎn)的ChatGPT點贊。

LLMs核心是 Transformer神經(jīng)網(wǎng)絡架構允許使用非常大的模型,通常具有數(shù)千億個參數(shù)。這種大規(guī)模的模型可以攝取海量數(shù)據(jù),通常來自互聯(lián)網(wǎng),也包括像 Common Crawl這樣的來源,后者包括超過 500億個網(wǎng)頁,以及維Ji百科,大約有 5700萬頁。

Transformer模型工作流程如下圖:

Transformer之所以非常適合用于大型語言模型,主要有兩個關鍵創(chuàng)新:位置編碼和自注意力。

  • 位置編碼(positional encodings):是指嵌入輸入在序列中出現(xiàn)的順序。本質(zhì)上,借助位置編碼,單詞可以不按順序輸入到神經(jīng)網(wǎng)絡中,而不是逐個按順序輸入。
  • 自注意力(self-attention):在處理輸入數(shù)據(jù)時為每個部分分配一個權重,這個權重表示該輸入在整個輸入中的重要性。換句話說,模型不需要對所有輸入給予同等的注意,而是可以專注于實際上重要的部分。隨著模型篩選和分析海量數(shù)據(jù),這種關于神經(jīng)網(wǎng)絡需要關注的輸入部分的表示會逐漸學習。

這兩種技術結合在一起,使得可以分析在長距離、非順序的情況下,各個元素是如何微妙地影響和相互關聯(lián)的。這種非順序處理數(shù)據(jù)的能力能夠把復雜問題分解成多個小的、同時進行的計算。自然地,GPU在并行解決這些類型的問題上非常適合,可以大規(guī)模處理大型未標注數(shù)據(jù)集和巨大的Transformer網(wǎng)絡。

如何搭建聊天機器人?

1.目標

設計一個聊天機器人,能理解用戶的輸入并提供合理的答復。

2.技術棧

  • Java: 使用Java作為開發(fā)語言。
  • Spring Boot: 作為項目的基礎框架,用于快速構建和部署 RESTful應用程序。
  • Spring AI: 使用 Spring Boot與AI API服務集成。
  • RESTful API: 提供 HTTP接口以與聊天機器人進行交互。
  • OpenAI API: 使用 OpenAI的 GPT等模型來處理自然語言并生成回復。

3.項目結構

  • Controller: 處理 HTTP請求。
  • Service: 業(yè)務邏輯層,包括與 OpenAI API的交互。
  • Model: 定義請求和響應的數(shù)據(jù)結構。
  • Configuration: 配置 OpenAI API的訪問。

4.步驟詳解

(1) 開始一個Spring Boot項目

首先,我們在開發(fā)環(huán)境中創(chuàng)建一個新的 Spring Boot項目,包括以下依賴:

  • Spring Web
  • Spring Boot DevTools
  • Spring Configuration Processor

(2) 配置OpenAI API

在application.properties或application.yml文件中,配置 OpenAI API key,例如:

openai.api.key=YOUR_OPENAI_API_KEY

需要從 OpenAI平臺申請一個 API key。

(3) 實現(xiàn)Controller

接下來,實現(xiàn)一個簡單的 RESTful控制器來處理客戶端請求,創(chuàng)建一個名為ChatController的類。

@RestController
@RequestMapping("/api/chat")
public class ChatController {

    @Autowired
    private ChatService chatService;

    @PostMapping("/ask")
    public ResponseEntity<ChatResponse> askQuestion(@RequestBody ChatRequest chatRequest) {
        String response = chatService.getResponse(chatRequest.getMessage());
        return ResponseEntity.ok(new ChatResponse(response));
    }
}

在這里,ChatRequest是一個包含用戶輸入消息的模型,而ChatResponse是包含聊天機器人的回復模型。

(4) 定義Model層

創(chuàng)建請求和響應的模型類。

public class ChatRequest {
    private String message;

    // getters and setters
}

public class ChatResponse {
    private String response;

    public ChatResponse(String response) {
        this.response = response;
    }

    // getters and setters
}

(5) 創(chuàng)建Service

建立一個ChatService類,通過此類調(diào)用 OpenAI API。

@Service
public class ChatService {

    private final String apiKey = "YOUR_OPENAI_API_KEY";

    public String getResponse(String message) {
        // 使用OpenAI API進行交互的邏輯
        // 例如,初始化OpenAI客戶端,發(fā)送請求,獲得響應。
        return callOpenAIAPI(message);
    }

    private String callOpenAIAPI(String message) {
        // 與OpenAI API進行實際交互的邏輯
        // 包括建立HTTP請求,解析JSON響應等。
        return "回答: " + message; // 示例
    }
}

在getResponse方法中,實現(xiàn)與 OpenAI API的交互。這包括設置HTTP請求頭,發(fā)送用戶消息,并解析API返回的回復。

(6) 配置API客戶端

使用Spring配置管理API客戶端的細節(jié)。也可以使用HttpClient或RestTemplate等工具來進行HTTP請求。

@Configuration
public class OpenAIConfig {

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    // 其他配置,例如API基礎URL或客戶端選項
}

(7) 與OpenAI API交互

在實際應用中,這一步可能涉及到復雜的API調(diào)用和響應處理,以下是一個簡單的示例,展示如何使用 RestTemplate與OpenAI API交互。

private String callOpenAIAPI(String message) {
    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.setBearerAuth(apiKey);

    JSONObject request = new JSONObject();
    request.put("prompt", message);
    request.put("max_tokens", 150);

    HttpEntity<String> entity = new HttpEntity<>(request.toString(), headers);

    ResponseEntity<String> response = restTemplate.postForEntity("https://api.openai.com/v1/engines/davinci-codex/completions", entity, String.class);
    
    // 解析API響應,返回消息
    JSONObject responseBody = new JSONObject(response.getBody());
    return responseBody.getJSONArray("choices").getJSONObject(0).getString("text");
}

到此,一個簡單的聊天機器人就實現(xiàn)好了,其實依賴 OpenAI的API實現(xiàn)聊天機器人很簡單,因為核心的語義分析等技術難點已自包含在三方 API中,我們只需要關注自己的業(yè)務邏輯。

總結

本文,我們分析了幾種實現(xiàn)聊天機器人的方法,從傳統(tǒng)的方式到如今如日中天的大語言模型, 然后基于 Spring Boot 和 OpenAI的 API,實現(xiàn)了一個簡易的聊天機器人,搭建的過程很簡單。

作為一名技術人員,或許你不是從事 AI相關的工作,但是,懷著對技術的好奇心,我們不應該只停留在使用 AI的階段,而更應該去了解 AI,了解 LLMs的原理,了解 Transformer模型,了解它和 CNNs和 RNNs的區(qū)別,從而更加好地擴展我們的技術視野。

對于一些國產(chǎn)的 AI產(chǎn)品,我們應該采用包容的態(tài)度多去使用它們,比如我們的豆包,讓 AI真正可以為我們的技術賦能。

責任編輯:趙寧寧 來源: 猿java
相關推薦

2021-05-24 15:29:24

人工智能機器人聊天

2020-12-02 13:00:17

Recast.AI聊天機器人人工智能

2023-07-27 14:38:58

人工智能機器人開發(fā)

2023-04-28 16:56:26

2024-09-30 13:11:09

2020-08-14 16:18:30

人工智能

2023-02-28 07:59:19

OpenAI聊天機器人

2021-11-30 10:56:43

ChatterBot機器人人工智能

2023-02-15 14:33:26

2019-03-22 09:00:00

AI人工智能聊天機器人

2022-08-04 07:03:41

AnswersInfobip無代碼

2023-03-29 13:07:34

微軟網(wǎng)絡安全聊天機器人

2023-03-07 07:52:47

ChatGPT人工智能

2022-09-30 13:55:46

Python機器人

2023-09-28 20:57:23

Meta人工智能聊天機器人

2022-07-05 06:42:01

聊天機器人人工智能

2024-08-16 07:09:22

2023-09-13 11:29:31

2017-03-28 12:21:21

機器人定義
點贊
收藏

51CTO技術棧公眾號