0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙原生開(kāi)發(fā)-仿ChatGPT應(yīng)用實(shí)戰(zhàn)

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-01-23 17:40 ? 次閱讀

運(yùn)行環(huán)境

DAYU200:4.0.10.16

SDK:4.0.10.15

IDE:4.0.600

前言

在配置好環(huán)境之后,可以嘗試這編寫(xiě)一個(gè)較為簡(jiǎn)單的應(yīng)用程序練練手,這里選擇使用一個(gè)免費(fèi)的API接口網(wǎng)站 ALAPI來(lái)嘗試編寫(xiě)一個(gè)可進(jìn)行對(duì)話的GPT應(yīng)用程序。

創(chuàng)建項(xiàng)目

創(chuàng)建好項(xiàng)目之后可以先把helloworld的demo在真機(jī)上跑一下,注意需要簽名

簽名方式

隨后直接點(diǎn)擊運(yùn)行,可以看到控制臺(tái)輸出

開(kāi)發(fā)板效果如圖所示

修改圖標(biāo)和名稱(chēng)

項(xiàng)目中含有文件記錄了應(yīng)用的圖標(biāo)和名稱(chēng),一部分是設(shè)置里的,一部分是顯示在桌面的,需要將這兩部分均做修改。

第一部分目錄在AppScope/app.json5

如下圖所示,icon和label分別對(duì)應(yīng)圖標(biāo)與名稱(chēng),我們將這里改為我們需要的內(nèi)容

此時(shí)在系統(tǒng)設(shè)置中我們的應(yīng)用圖標(biāo)和名稱(chēng)應(yīng)當(dāng)都改過(guò)來(lái)了

修改桌面圖標(biāo)和名稱(chēng)

修改src/main/module.json5中如圖所示的label和icon。

我們修改label的時(shí)候,修改中文目錄下的就可以,具體操作衛(wèi)按住ctrl跳轉(zhuǎn)時(shí)選擇中文路徑

更改后效果如下

對(duì)應(yīng)用添加相關(guān)權(quán)限

由于使用ChatGpt需要使用網(wǎng)絡(luò)權(quán)限,我們?cè)谶@里添加網(wǎng)絡(luò)權(quán)限

在src/main/module.json5中modele中添加配置

"requestPermissions": [{
  "name": "ohos.permission.INTERNET"
}],

自定義數(shù)據(jù)模型

本次調(diào)用GPT的API可以自定數(shù)據(jù)模型來(lái)實(shí)現(xiàn),我們可以在ets目錄下新建Model文件夾,新建GPTModel文件(ts)

export class ChatGptModel {
  code: number = 0
  message: string = ""
  data: ChatGpt = new ChatGpt()
}

export class ChatGpt {
  content: string = ""

}

由于在API網(wǎng)站中查看ChatGPT調(diào)用時(shí)返回的參數(shù)較少,直接寫(xiě)在里面

在網(wǎng)站的請(qǐng)求參數(shù)介紹中有這樣的內(nèi)容

我們實(shí)現(xiàn)的時(shí)簡(jiǎn)單的一對(duì)一的對(duì)話,所以message暫時(shí)可以不用管,在在線測(cè)試網(wǎng)站中嘗試

token可以通過(guò)注冊(cè)本網(wǎng)站來(lái)獲取[ ALAPI]

得到響應(yīng)主體

{
  "code": 200,
  "msg": "success",
  "data": {
    "content": "你好!我是一個(gè)AI助手,可以幫助您回答問(wèn)題和提供服務(wù)。有什么我可以為您做的嗎?"
  },
  "time": 1704790385,
  "usage": 1,
  "log_id": "603268355937845248"
}

可以看到我們需要的僅僅只有content內(nèi)的內(nèi)容。

創(chuàng)建輸入界面

作為一款問(wèn)答式GPT應(yīng)用,需要有用戶(hù)輸入的地方,我們這里簡(jiǎn)單的做一個(gè)輸入頁(yè)面

輸入頁(yè)面可以直接在默認(rèn)的index頁(yè)面中修改

輸入框組件

查詢(xún)按鈕

按鈕點(diǎn)擊時(shí)的事件,這里參考一篇博客,將用戶(hù)輸入內(nèi)容傳遞給下一個(gè)頁(yè)面,下一個(gè)頁(yè)面我們將其命名為ChatGpt

源代碼如下

import router from '@ohos.router'

@Entry
@Component
struct Login {
  @State message: string = '歡迎使用ChatGpt'

  build() {
    Column() {
      TextInput({
        placeholder: "請(qǐng)輸入您的問(wèn)題"
      }).onChange((value: string) = > {
        console.info("輸入的問(wèn)題是" + value)
        this.message = value

      }).type(InputType.Normal)

      Button("查詢(xún)")
        .width("100%")
        .backgroundColor(Color.Orange)
        .fontColor(Color.Black)
        .margin({
          bottom: 10
        })
        .onClick(() = > {
          router.pushUrl({
            url: "pages/ChatGpt",
            params: {
              message: this.message
            }
          }, router.RouterMode.Single)
        })

    }.width("100%").height("100%").justifyContent(FlexAlign.Center).padding({
      left: "10", right: 10
    })
  }
}

創(chuàng)建HTTP請(qǐng)求

下面我們寫(xiě)用戶(hù)點(diǎn)擊按鈕后的返回頁(yè)面

1.導(dǎo)入http模塊

登錄后復(fù)制

import http from '@ohos.net.http';
import { BusinessError } from '@ohos.base';

2.創(chuàng)建createHttp

let httpRequest = http.createHttp();

3.填寫(xiě)HTTP地址

httpData() {

  // 3.每一個(gè)httpRequest對(duì)應(yīng)一個(gè)HTTP請(qǐng)求任務(wù),不可復(fù)用
  let httpRequest = http.createHttp();
  //4.
  httpRequest.request(// 填寫(xiě)HTTP請(qǐng)求的URL地址,可以帶參數(shù)也可以不帶參數(shù)。URL地址需要開(kāi)發(fā)者自定義。請(qǐng)求的參數(shù)可以在extraData中指定
    "https://v2.alapi.cn/api/chatgpt/pro",
    {
      method: http.RequestMethod.GET, // 可選,默認(rèn)為http.RequestMethod.GET
      // // 開(kāi)發(fā)者根據(jù)自身業(yè)務(wù)需要添加header字段
      header: [{
        'Content-Type': 'application/json'
      }],
      // 當(dāng)使用POST請(qǐng)求時(shí)此字段用于傳遞內(nèi)容
      extraData: {
        "token": "此處替換為你的token",
        "content":this.paramsFromIndex?.['message'],
        "max_tokens":"10000"
      },
      // expectDataType: http.HttpDataType.STRING, // 可選,指定返回?cái)?shù)據(jù)的類(lèi)型
      // usingCache: true, // 可選,默認(rèn)為true
      // priority: 1, // 可選,默認(rèn)為1
      // connectTimeout: 60000, // 可選,默認(rèn)為60000ms
      // readTimeout: 60000, // 可選,默認(rèn)為60000ms
      // usingProtocol: http.HttpProtocol.HTTP1_1, // 可選,協(xié)議類(lèi)型默認(rèn)值由系統(tǒng)自動(dòng)指定
      // usingProxy: false, //可選,默認(rèn)不使用網(wǎng)絡(luò)代理,自API 10開(kāi)始支持該屬性
    }, (err: BusinessError, data: http.HttpResponse) = > {
    
    //對(duì)網(wǎng)絡(luò)數(shù)據(jù)的處理    
    if (!err) {


      // data.result為HTTP響應(yīng)內(nèi)容,可根據(jù)業(yè)務(wù)需要進(jìn)行解析
      console.info('Result:' + JSON.stringify(data.result));
      let ChatGptModel: ChatGptModel = JSON.parse(data.result.toString())
      this.ChatGpt = ChatGptModel.data

      console.info('code:' + JSON.stringify(data.responseCode));
      // data.header為HTTP響應(yīng)頭,可根據(jù)業(yè)務(wù)需要進(jìn)行解析
      console.info('header:' + JSON.stringify(data.header));
      console.info('cookies:' + JSON.stringify(data.cookies)); // 8+
      // 當(dāng)該請(qǐng)求使用完畢時(shí),調(diào)用destroy方法主動(dòng)銷(xiāo)毀
      httpRequest.destroy();
    } else {

      console.error('error:' + JSON.stringify(err));
      // 取消訂閱HTTP響應(yīng)頭事件
      httpRequest.off('headersReceive');
      // 當(dāng)該請(qǐng)求使用完畢時(shí),調(diào)用destroy方法主動(dòng)銷(xiāo)毀
      httpRequest.destroy();
    }
  }
  );
}

不要忘記將頁(yè)面添加到mainpage中

路徑src/main/resources/base/profile/main_pages.json

接下來(lái)就可以嘗試運(yùn)行一下代碼,在開(kāi)發(fā)板中運(yùn)行效果如下

點(diǎn)擊查詢(xún)之后的效果如下:

如此,一個(gè)簡(jiǎn)單的GPT程序就做好了還可以讓它幫你寫(xiě)情書(shū)哦

最后附上HarmonyOSOpenHarmony的技術(shù)分布曲線圖:主頁(yè)保存

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1507

    瀏覽量

    62217
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2378

    瀏覽量

    42938
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3731

    瀏覽量

    16431
  • ChatGPT
    +關(guān)注

    關(guān)注

    29

    文章

    1564

    瀏覽量

    7861
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙原生頁(yè)面高性能解決方案上線OpenHarmony社區(qū) 助力打造高性能原生應(yīng)用

    隨著HarmonyOS NEXT的正式推出,鴻蒙原生應(yīng)用開(kāi)發(fā)熱度高漲,數(shù)量激增。但在三方應(yīng)用鴻蒙化進(jìn)程中,性能問(wèn)題頻出。為此,HarmonyOS NEXT推出了一整套
    發(fā)表于 01-02 18:00

    鴻蒙原生開(kāi)發(fā)手記:01-元服務(wù)開(kāi)發(fā)

    簡(jiǎn)介 元服務(wù)是鴻蒙中的一種輕量應(yīng)用形態(tài),無(wú)需下載,直接運(yùn)行。類(lèi)似于微信小程序,但與小程序不同的是,元服務(wù)更加輕量。 元服務(wù)使用原生開(kāi)發(fā),是系統(tǒng)級(jí)提供的,無(wú)論從易用性、性能、體驗(yàn)上,都要比小程序好
    發(fā)表于 11-14 17:28

    鴻蒙Flutter實(shí)戰(zhàn):07混合開(kāi)發(fā)

    # 鴻蒙Flutter實(shí)戰(zhàn):混合開(kāi)發(fā) 鴻蒙Flutter混合開(kāi)發(fā)主要有兩種形式。 ## 1.基于har 將flutter module
    發(fā)表于 10-23 16:00

    軟通動(dòng)力榮膺首批“鴻蒙原生應(yīng)用開(kāi)發(fā)及培訓(xùn)鉆石服務(wù)商”

    近日,鴻蒙原生應(yīng)用合作交流推介會(huì)在深圳成功召開(kāi)。在此次盛會(huì)上,軟通動(dòng)力脫穎而出,成為鴻蒙生態(tài)的首批認(rèn)證合作伙伴,并榮獲“鴻蒙原生應(yīng)用
    的頭像 發(fā)表于 05-22 10:53 ?755次閱讀

    哪吒汽車(chē)APP啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)

    哪吒汽車(chē)正式簽約,啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā);在5月17日,在上海市經(jīng)濟(jì)和信息化委員會(huì)指導(dǎo)的“千帆競(jìng)發(fā)啟航 共筑鴻蒙生態(tài)——HDD上海站·鴻蒙
    的頭像 發(fā)表于 05-18 09:48 ?1188次閱讀

    實(shí)錘!騰訊終于擁抱鴻蒙生態(tài),微信鴻蒙原生版本即將上線

    兼容,為用戶(hù)提供更好的使用體驗(yàn)。微信的加入將為鴻蒙生態(tài)注入新的活力,為用戶(hù)帶來(lái)更多便利和樂(lè)趣 。此前華為宣布啟動(dòng)原生應(yīng)用的布局后,美團(tuán)、微博、釘釘?shù)阮^部廠商紛紛官宣啟動(dòng)鴻蒙原生應(yīng)用的
    發(fā)表于 04-30 21:14

    軟通動(dòng)力與鴻蒙生態(tài)服務(wù)雙方將共同聚焦鴻蒙原生應(yīng)用開(kāi)發(fā)和培訓(xùn)領(lǐng)域

    3月8日,軟通動(dòng)力與鴻蒙生態(tài)服務(wù)(深圳)有限公司(以下簡(jiǎn)稱(chēng)“鴻蒙生態(tài)服務(wù)公司”)簽署合作協(xié)議,雙方將共同聚焦鴻蒙原生應(yīng)用開(kāi)發(fā)和培訓(xùn)領(lǐng)域
    的頭像 發(fā)表于 03-14 09:54 ?527次閱讀

    深圳市24年,實(shí)現(xiàn)鴻蒙原生應(yīng)用數(shù)占全國(guó)總量10%以上

    不吹不捧,鴻蒙自從24年的星河版發(fā)布會(huì)之后。純血鴻蒙已經(jīng)開(kāi)啟大規(guī)模的行動(dòng),首批 200 + 鴻蒙原生應(yīng)用已經(jīng)在加速開(kāi)發(fā),先鋒垂域齊備,覆蓋便
    發(fā)表于 03-04 21:42

    鴻蒙實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā):【短信服務(wù)】

    、OpenHarmony 多媒體技術(shù)、Napi組件、OpenHarmony內(nèi)核、Harmony南向開(kāi)發(fā)鴻蒙項(xiàng)目實(shí)戰(zhàn)等等)鴻蒙(Harmony NEXT) 技術(shù)知識(shí)點(diǎn) 如果你是一名An
    發(fā)表于 03-03 21:29

    使用 Taro 開(kāi)發(fā)鴻蒙原生應(yīng)用 —— 快速上手,鴻蒙應(yīng)用開(kāi)發(fā)指南

    隨著鴻蒙系統(tǒng)的不斷完善,許多應(yīng)用廠商都希望將自己的應(yīng)用移植到鴻蒙平臺(tái)上。最近,Taro 發(fā)布了 v4.0.0-beta.x 版本,支持使用 Taro 快速開(kāi)發(fā)鴻蒙
    的頭像 發(fā)表于 02-02 16:09 ?919次閱讀
    使用 Taro <b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>鴻蒙</b><b class='flag-5'>原生</b>應(yīng)用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b>指南

    淘寶與華為合作將基于HarmonyOS NEXT啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)

    1月25日,淘寶與華為舉辦鴻蒙合作簽約儀式,宣布將基于HarmonyOS NEXT啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)。
    的頭像 發(fā)表于 01-26 16:14 ?1164次閱讀

    淘寶正式啟動(dòng)華為鴻蒙原生應(yīng)用開(kāi)發(fā)

    華為與淘寶近日宣布,淘寶已正式啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)。這一合作標(biāo)志著鴻蒙生態(tài)在電商領(lǐng)域的布局進(jìn)一步擴(kuò)大,將為用戶(hù)帶來(lái)全新的全場(chǎng)景購(gòu)物體驗(yàn)。
    的頭像 發(fā)表于 01-26 15:59 ?811次閱讀

    鴻蒙原生應(yīng)用/元服務(wù)實(shí)戰(zhàn)-Web隱私聲明

    這個(gè)位置的隱私申明是需要在WEB網(wǎng)頁(yè)下完成的,ArkTS鴻蒙原生應(yīng)用與元服務(wù)開(kāi)發(fā)者,不一定熟悉這塊,一些公司也不一定有自己的服務(wù)器和域名、網(wǎng)站網(wǎng)頁(yè)或者相關(guān)權(quán)限是外包,沒(méi)法進(jìn)行實(shí)時(shí)操作。所以,這塊要提前準(zhǔn)備,要不會(huì)影響提交進(jìn)度。
    發(fā)表于 01-24 15:05

    多家頭部企業(yè)宣布「啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)」,你看好鴻蒙系統(tǒng)走向「獨(dú)立」嗎?

    鴻蒙生態(tài)迎「關(guān)鍵一戰(zhàn)」,多家頭部企業(yè)宣布「啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)」,你看好鴻蒙系統(tǒng)走向「獨(dú)立」嗎?
    的頭像 發(fā)表于 01-24 11:47 ?598次閱讀
    多家頭部企業(yè)宣布「啟動(dòng)<b class='flag-5'>鴻蒙</b><b class='flag-5'>原生</b>應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b>」,你看好<b class='flag-5'>鴻蒙</b>系統(tǒng)走向「獨(dú)立」嗎?

    京東正式啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)

    華為與京東于近日宣布達(dá)成一項(xiàng)重要合作,正式啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)。這一合作旨在利用HarmonyOS NEXT的獨(dú)特優(yōu)勢(shì),為消費(fèi)者提供更出色的購(gòu)物體驗(yàn)。
    的頭像 發(fā)表于 01-18 15:02 ?806次閱讀