国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

把ChatGPT加入Flutter開發,會有怎樣的體驗?

OSC開源社區 ? 來源:OSCHINA 社區 ? 2023-03-06 09:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

ChatGPT 最近一直都處于技術圈的討論焦點。它除了可作為普通用戶的日常 AI 助手,還可以幫助開發者加速開發進度。聲網社區的一位開發者 "小猿" 就基于 ChatGPT 做了一場實驗。僅 40 分鐘就實現了一個互動直播 Demo。他是怎么做的呢?他將整個過程記錄了下來。 (文章轉載自開發者的個人博客,以下為正文) “遇事不決,AI 力學” ~ ChatGPT 可以說是 2023 開年最熱門的話題, 它不僅在極短時間內風靡了整個技術圈,更是病毒式地席卷了圈外的各個行業,并對各大企業都起到了實質性影響:

谷歌緊急推出 “Bard” 對抗 ChatGPT

微軟發布新 Bing 集成 ChatGPT

復旦發布首個類 ChatGPT 模型 MOSS

國內阿里、百度、昆侖萬維、網易、京東都開始新一輪 AI 軍備

那 ChatGPT 究竟有什么魔力能讓 “群雄折腰”?這和 ChatGPT 的實現有很大關系:

與以往的統計模型不行,ChatGPT 不是那種「一切都從語料統計里學習」的 AI,相反 ChatGPT 具備有臨場學習的能力,業內稱之為 in-context learning ,這也是為什么 ChatGPT 可以在上下文中學習的原因。

ChatGPT 屬于 AI 領域在商用技術上的重大突破,當然,本篇我們不是要討論 ChatGPT 的實現邏輯,而是 ChatGPT 會怎么樣加速我們的開發?

PS:在此之前有人通過指示在 ChatGPT 界面下實現了一個虛擬機,雖然這是一個極端的例子,但是可以很直觀地感受到:「ChatGPT 對我們開發的影響是肉眼可見」。

那 ChatGPT 在實際工作中是如何影響我們的開發?為了更直觀,下面我們用一個開發場景來模擬這個流程。

基于 ChatGPT 開發

01 開發之前

假設我們現在有一個開發「直播」的需求,那我們可以直接求助 ChatGPT:

「開發一個直播 app,是使用第三方 SDK 好還是自己從 0 開發好」?

如下圖所示,從回答上可以看到,AI 建議我們根據團隊實際情況去選擇,而在知曉「我的團隊只有 5 個人」的情況后,它建議我選擇采用 “接入第三方 SDK” 的方式更合理。

8888c4dc-bb89-11ed-bfe3-dac502259ad0.png

89236384-bb89-11ed-bfe3-dac502259ad0.png

那么選擇 “接入第三方 SDK” ,接下來的問題就是:「選擇做直播,在中國推薦使用哪些廠家的 SDK」? 如下圖所示,這個問題 ChatGPT 同樣提供了多個選項,從選項里看 *聲網、騰訊云和阿里云 * 好像都符合我們要求,而在接著的「優勢問題」對比上看,這三個選項都 “不相伯仲”,那我們就在再細化問題。

896312fe-bb89-11ed-bfe3-dac502259ad0.png

8a3759ba-bb89-11ed-bfe3-dac502259ad0.png

假設我們希望直播可以有更多 “互動能力”,那么把問題修改為「做互動直播,更推薦使用哪一個廠家的 SDK」,截圖如下圖所示,這次我們得到了更明確的答復,看來聲網的 SDK 會更貼合我們的需求。

8ae095fc-bb89-11ed-bfe3-dac502259ad0.png

為了更放心這個選擇,我們通過「聲網 SDK的優勢」和「什么產品使用了聲網 SDK」兩個問題進行提問,如下圖所示,從回復上看聲網作為一個全球化的廠家,在音視頻領域還是值得相信。同時,還有包括小米、陌陌等產品都使用了聲網的服務。那么就按照 AI 的建議選擇聲網 SDK 吧。

8b633598-bb89-11ed-bfe3-dac502259ad0.png

8bfff414-bb89-11ed-bfe3-dac502259ad0.png

有沒有發現,在獲取資料的檢索方式上,ChatGPT 確實比搜索引擎更直觀且高效。

那么敲定完 SDK ,接下來我們需要選擇應用的開發框架,我們把需求限定在 AndroidiOS,更好是能兼容 Web,覆蓋整個移動端 ,因為團隊人數不多,所以我們希望采用跨平臺開發來節約成本,那么問題就是:

「移動端哪個跨平臺框架更適合做直播」?

如下圖所示,得到的答案有 React Native 和 Flutter ,而恰好在 Flutter 回復里可以看到聲網 SDK 的存在,所以我們可以敲定 App 開發框架就選 Flutter 了。

8c563d6a-bb89-11ed-bfe3-dac502259ad0.png

最后,在開發之前,我們還需要繼續提問「如何獲取聲網 SDK」和「使用聲網 SDK 需要做什么」,這樣我們就可以在開始開發之前提前準備好需要的東西。

8d3ec792-bb89-11ed-bfe3-dac502259ad0.png

8db7471c-bb89-11ed-bfe3-dac502259ad0.png

關于注冊獲取 App ID 等步驟這里就省略了,畢竟目前這部分 ChatGPT 也無能為力。

02 開始開發

那么到這里我們就假定大家已經準備好了開發環境,接下來可以直接進行開發。 我們還是繼續面向 ChatGPT 開發,首先我們的提問是:「用聲網的 Flutter SDK agora_rtc_engine 6.1.0寫一個視頻通話頁面,給我 dart 代碼」,結果如下 GIF 所示,可以看到 ChatGPT 開始了瘋狂的輸出:

為什么關鍵詞是「視頻通話」?因為它比直播場景更精準簡單,生成的代碼更靠譜(經過提問測試),而基于視頻通話部分,后面我們可以快速拓展為互動直播場景;而指定版本是為了避免 AI 使用舊版本 API。

8e585008-bb89-11ed-bfe3-dac502259ad0.gif

從上門的代碼生成可以看到,ChatGPT 生產的代碼是自帶中文注釋,更貼心的是,如下圖所示,在生成的代碼末尾還給你解釋了這段代碼的實現邏輯,就像一個 “知心大姐姐”。

8f2354e2-bb89-11ed-bfe3-dac502259ad0.png

從這里也可以感覺到 ,ChatGPT 不是一個單純的完全只會基于語料答復整合的 AI 。

當然,直接復制生成的代碼后會發現這段代碼會報錯,這和 ChatGPT 目前的模型數據版本有一定關系,所以針對生成的代碼我們需要做一定手動調整,比如:

采用createAgoraRtcEngine和initialize創建和初始化RtcEngine

將setEventHandler修改為最新的registerEventHandler

將AgoraRenderWidget修改為AgoraVideoView

最后修改代碼如下,其中 80% 以上的邏輯都來自 ChatGPT 的自動生成,雖然沒辦法做到 “直出”,這無疑大大提高了開發的生產力。

class VideoCallPage extends StatefulWidget {
  final String channelName;

  const VideoCallPage({Key? key, required this.channelName}) : super(key: key);

  @override
  _VideoCallPageState createState() => _VideoCallPageState();
}

class _VideoCallPageState extends State {
  late RtcEngine _engine;
  bool _localUserJoined = false;
  bool _remoteUserJoined = false;
  int? rUid;

  @override
  void initState() {
    super.initState();
    initAgora();
  }

  @override
  void dispose() {
    _engine.leaveChannel();
    super.dispose();
  }

  Future initAgora() async {
    await [Permission.microphone, Permission.camera].request();

    _engine = createAgoraRtcEngine();
    await _engine.initialize(RtcEngineContext(
      appId: config.appId,
      channelProfile: ChannelProfileType.channelProfileLiveBroadcasting,
    ));

  

    _engine.registerEventHandler(RtcEngineEventHandler(
      onJoinChannelSuccess: (RtcConnection connection, int elapsed) {
        setState(() {
          _localUserJoined = true;
        });
      },
      onUserJoined: (connection, remoteUid, elapsed) {
        setState(() {
          _remoteUserJoined = true;
          rUid = remoteUid;
        });
      },
      onUserOffline: (RtcConnection connection, int remoteUid,
          UserOfflineReasonType reason) {
        setState(() {
          _remoteUserJoined = false;
          rUid = null;
        });
      },
    ));

    await _engine.enableVideo();

    await _engine.startPreview();

    await _engine.joinChannel(
      token: config.token,
      channelId: widget.channelName,
      uid: config.uid,
      options: const ChannelMediaOptions(
        channelProfile: ChannelProfileType.channelProfileLiveBroadcasting,
        clientRoleType: ClientRoleType.clientRoleBroadcaster,
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("VideoCallPage"),),
      body: Center(
        child: Stack(
          children: [
            _remoteUserJoined ? _remoteVideoView(rUid) : _placeholderView(),
            _localUserJoined ? _localVideoView() : _placeholderView(),
          ],
        ),
      ),
    );
  }

  Widget _placeholderView() {
    return Container(
      color: Colors.black,
    );
  }

  Widget _remoteVideoView(id) {
    return AgoraVideoView(
      controller: VideoViewController.remote(
        rtcEngine: _engine,
        canvas: VideoCanvas(uid: id),
        connection: RtcConnection(channelId: widget.channelName),
      ),
    );
  }

  Widget _localVideoView() {
    return Positioned(
      right: 16,
      bottom: 16,
      width: 100,
      height: 160,
      child: AgoraVideoView(
        controller: VideoViewController(
          rtcEngine: _engine,
          canvas: const VideoCanvas(uid: 0),
        ),
      ),
    );
  }
}
接下來,如下圖所示,在將項目運行到手機和 PC 端之后,可以看到我們就完成了最簡單的直播視頻場景,而基于我們打算做直播的念頭僅僅過去了 40 分鐘,這其中還包含了注冊聲網賬號和申請 App ID 的過程,我們通過簡單的提問、復制、粘貼、修改,就完成了一個直播需求的 demo。

8f896db8-bb89-11ed-bfe3-dac502259ad0.png

紅色方塊是后期加上的打碼~

那么到這里,雖然目前為止 demo 項目還不是互動直播,但是基于這個 demo 實現互動直播場景不會太難,因為你已經跑通了整個 SDK 的鏈路流程了。

03 進階開發

那假設我們需要繼續往互動直播的方向開發,那么我們肯定會遇到 “互動” 這個需求,比如「收到用戶發送的一段內容后畫面彈出一個動畫」 這樣的需求。 那么首先我們要知道聲網 SDK 如何監聽用戶發送的內容,所以接下來我們繼續提問:「如何使用聲網的 agora_rtc_engine 6.1.0 監聽別人發送的文本消息」 ?

這里為什么還強制寫 agora_rtc_engine 6.1.0 ?因為如果不寫,默認可能會輸出 4.x 版本的老 API。

盡管得到的答案并不是 Dart 代碼而是 OC ,但是關鍵詞registerEventHandler和Message我們捕抓到了,簡單對比一下,就是Flutter SDK里的registerEventHandler對象,可以發現平替的接口就是onStreamMessage回調。

90080a56-bb89-11ed-bfe3-dac502259ad0.png

那么接著就是彈出什么內容,因為我們沒有素材,假設還沒有設計師,那不如就讓 ChatGPT 幫我們畫一只兔子吧,不過測試結果并不好,如下圖所示,從輸出結果上看 ,這并不是我們想要的。

這里是我自己加的粉色,不然都是白色會糊成一坨,不得不說 ChatGPT 在繪制能力上 “很抽象”。

90ad3990-bb89-11ed-bfe3-dac502259ad0.png

910aa54e-bb89-11ed-bfe3-dac502259ad0.png

所以 ChatGPT 有時候也不是很智能,可能目前在繪畫理解上它還沒那么成熟, 但是沒問題, ChatGPT 是可以通過上下文學習 “調教” 的,比如我們覺得兔子的耳朵形狀太離譜,那么我們可以讓 ChatGPT 給我們調整。 如下所示,雖然調整之后依然不對,但是比起一開始是不是好很多了?

91268e94-bb89-11ed-bfe3-dac502259ad0.png

91701b18-bb89-11ed-bfe3-dac502259ad0.png

這就是 ChatGPT 在每次會話上下文里學習的表現。

然后我們在兔子耳朵的基礎上再讓 ChatGPT 補全兔子頭,雖然最終的效果依然不理想,但是比起一開始已經進步了很多。

917f25ea-bb89-11ed-bfe3-dac502259ad0.png

同時我們還讓 ChatGPT 給我們畫了一個 “星星”,然后結合這兩個 Canvas 繪制的素材,我們在代碼里設置接收到 "兔子" 和 星星 文本的時候,就彈出一個放大動畫效果。 最終運行后效果如下 GIF 所示,看起來很簡陋,但是要知道,我們只是經過了簡單的復制 / 粘貼就完成了這樣的效果,這難道不是開發效率的極大提高?

源碼在后面。

91ab15ba-bb89-11ed-bfe3-dac502259ad0.gif

來自 ChatGPT 的兔子頭代碼:

class StarPaint extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return CustomPaint(
      painter: HeartPainter(),
      size: Size(50, 50),
    );
  }
}

class StarPaint extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()
      ..color = Colors.red
      ..style = PaintingStyle.fill;
    final path = Path();
    final halfWidth = size.width / 2;
    final halfHeight = size.height / 2;
    final radius = halfWidth;

    path.moveTo(halfWidth, halfHeight + radius);
    path.arcToPoint(
      Offset(halfWidth + radius, halfHeight),
      radius: Radius.circular(radius),
      clockwise: true,
    );
    path.arcToPoint(
      Offset(halfWidth, halfHeight - radius),
      radius: Radius.circular(radius),
      clockwise: true,
    );
    path.arcToPoint(
      Offset(halfWidth - radius, halfHeight),
      radius: Radius.circular(radius),
      clockwise: true,
    );
    path.arcToPoint(
      Offset(halfWidth, halfHeight + radius),
      radius: Radius.circular(radius),
      clockwise: true,
    );
    canvas.drawPath(path, paint);
  }

  @override
  bool shouldRepaint(covariant StarPaint oldDelegate) {
    return false;
  }
}
來自 ChatGPT 的星星代碼:
class StarPaint extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return CustomPaint(
      painter: HeartPainter(),
      size: Size(50, 50),
    );
  }
}

class StarPaint extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()
      ..color = Colors.red
      ..style = PaintingStyle.fill;
    final path = Path();
    final halfWidth = size.width / 2;
    final halfHeight = size.height / 2;
    final radius = halfWidth;

    path.moveTo(halfWidth, halfHeight + radius);
    path.arcToPoint(
      Offset(halfWidth + radius, halfHeight),
      radius: Radius.circular(radius),
      clockwise: true,
    );
    path.arcToPoint(
      Offset(halfWidth, halfHeight - radius),
      radius: Radius.circular(radius),
      clockwise: true,
    );
    path.arcToPoint(
      Offset(halfWidth - radius, halfHeight),
      radius: Radius.circular(radius),
      clockwise: true,
    );
    path.arcToPoint(
      Offset(halfWidth, halfHeight + radius),
      radius: Radius.circular(radius),
      clockwise: true,
    );
    canvas.drawPath(path, paint);
  }

  @override
  bool shouldRepaint(covariant StarPaint oldDelegate) {
    return false;
  }
}
自己補充的監聽文本、發送文本和動畫效果代碼:
onStreamMessage: (RtcConnection connection, int remoteUid, int streamId,
    Uint8List data, int length, int sentTs) {
  var message = utf8.decode(data);
  if (message == "兔子") {
    showDialog(
        context: context,
        builder: (context) {
          return AnimaWidget(Rabbit());
        });
  } else if (message == "星星") {
    showDialog(
        context: context,
        builder: (context) {
          return Center(
            child: AnimaWidget(StarPaint()),
          );
        });
  }
  Future.delayed(Duration(seconds: 3), () {
    Navigator.pop(context);
  });
},

Future _onPressSend() async {
  try {
    final streamId = await _engine.createDataStream(
        const DataStreamConfig(syncWithAudio: false, ordered: false));
    var txt = (Random().nextInt(10) % 2 == 0) ? "星星" : "兔子";
    final data = Uint8List.fromList(utf8.encode(txt));
    await _engine.sendStreamMessage(
        streamId: streamId, data: data, length: data.length);
  } catch (e) {
    print(e);
  }
}

class AnimaWidget extends StatefulWidget {
  final Widget child;

  const AnimaWidget(this.child);

  @override
  State createState() => _AnimaWidgetState();
}

class _AnimaWidgetState extends State {
  double animaScale = 1;

  @override
  void initState() {
    super.initState();
    Future.delayed(Duration(seconds: 1), () {
      animaScale = 5;
      setState(() {});
    });
  }

  @override
  Widget build(BuildContext context) {
    return AnimatedScale(
        scale: animaScale,
        duration: Duration(seconds: 1),
        curve: Curves.bounceIn,
        child: Container(child: widget.child));
  }
}
相信到這里大家應該可以感受到 ChatGPT 提高開發效率的魅力,甚至你還可以把 ChatGPT 集成到你的直播場景里,通過 Flutter 上的chatgpt_api_client插件,你可以在 App 里直接向 ChatGPT 提問,比如通過 OpenAI 的 API 實現一個可以互動的虛擬主播。

我怎么知道這個插件?肯定也是問 ChatGPT 的啊~

935ce46a-bb89-11ed-bfe3-dac502259ad0.png

93a6573a-bb89-11ed-bfe3-dac502259ad0.png

04 最后

到這里,相信大家應該能感受到,在使用 ChatGPT 之后,** 整個開發效率能夠得到很大的提升,特別是內容檢索的高效和準確上比搜索引擎更加靠譜,** 另外也能幫我們完成一些 “體力活” 形式的代碼。 當然我們也看到了目前 ChatGPT 并不能完全替代人工,因為它在很多方面生成的內容并不完美,特別是很多代碼還是需要我們人工調整,但是這并不影響 ChatGPT 的價值。 最后引用我曾經看到過的關于 ChatGPT 的一些評價:

「當你抱怨 ChatGPT 鬼話連篇滿嘴跑火車的時候,這可能有點像你看到一只猴子在沙灘上用石頭寫下 1+1=3。它確實算錯了,但這不是重點。它有一天會算對的。」

我相信 AI 并不是直接取代人類的方式,因為它對社會的擠壓不是從水平上碾壓,而是劣幣驅逐良幣,比如有位大佬就說過:「乙方最討厭甲方什么都不懂還 bb,但乙方的議價權恰恰來源于甲方什么都不懂還 bb」 ,而現在 ChatGPT 在慢慢消磨掉整個議價權。 總的來說「ChatGPT 只是一個產品,它不代表的整個技術的 “上限” ,它代表的是技術已經到達商用的臨界點」。 現在,它在慢慢成為開發圈子里的習慣,和曾經的 Copilot 一樣,而同時它在其他領域如文字編排等的能力,甚至遠超它在開發領域的價值。


審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • AI
    AI
    +關注

    關注

    91

    文章

    39755

    瀏覽量

    301346
  • SDK
    SDK
    +關注

    關注

    3

    文章

    1101

    瀏覽量

    51713
  • ChatGPT
    +關注

    關注

    31

    文章

    1598

    瀏覽量

    10264

原文標題:把ChatGPT加入Flutter開發,會有怎樣的體驗?

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    巨頭競逐AI醫療健康:OpenAI推出ChatGPT Health,螞蟻阿福國內領跑

    健康已成為AI技術的高頻應用場景。OpenAI在其一篇博客文章中透露,通過分析匿名化的ChatGPT對話數據,發現全球每周有超過2.3億人在ChatGPT上咨詢健康相關問題,醫療健康的需求極為旺盛。
    的頭像 發表于 01-10 11:17 ?2411次閱讀

    Flutter 移動端開發:集成淘寶 API 實現商品數據實時展示 APP

    在電商蓬勃發展的當下,移動端購物成為主流趨勢。對于開發者而言,利用 Flutter 構建一個能夠實時展示淘寶商品數據的 APP,既能滿足用戶便捷獲取商品信息的需求,也能為電商業務拓展新的渠道
    的頭像 發表于 11-13 09:36 ?364次閱讀

    軟件包加入后不顯示packages文件夾是怎么回事?

    軟件包加入后不顯示packages文件夾,使用rt——thread標準版,基于星火一號開發
    發表于 09-19 08:28

    RT-Thread睿賽德正式加入AUTOSAR 組織,成為開發合作伙伴!

    近日,AUTOSAR宣布RT-Thread睿賽德已正式加入AUTOSAR組織成為開發合作伙伴!AUTOSAR組織AUTOSAR組織的本質是一個開發合作伙伴關系。作為全球汽車開放式系統架構的標準制
    的頭像 發表于 09-04 17:07 ?1305次閱讀
    RT-Thread睿賽德正式<b class='flag-5'>加入</b>AUTOSAR 組織,成為<b class='flag-5'>開發</b>合作伙伴!

    超過200萬開發加入NVIDIA機器人技術生態

    已經有超過 200 萬開發加入 NVIDIA 機器人技術生態系統。這些開發者正在推動制造業、食品配送、農業、醫療健康、設施維護等眾多行業的變革。 自 2014 年 NVIDIA Jetson 平臺
    的頭像 發表于 08-21 19:47 ?1954次閱讀
    超過200萬<b class='flag-5'>開發</b>者<b class='flag-5'>加入</b>NVIDIA機器人技術生態

    Android Studio中的Gemini全面支持Dart和Flutter開發

    在 Android Studio 中創建 Android 應用的 Flutter 開發者將迎來一次重大的飛躍: Android Studio 中的 Gemini 已全面支持 Dart
    的頭像 發表于 08-06 13:52 ?1336次閱讀
    Android Studio中的Gemini全面支持Dart和<b class='flag-5'>Flutter</b><b class='flag-5'>開發</b>

    餐飲服務與軟件創新的融合:解析海底撈APP的Flutter鴻蒙開發之路

    首版本上架華為應用市場,今年1月推出全量功能商用版本。基于HarmonyOS 5.0,結合Flutter混編開發的技術探索,以下內容將從功能實現細節、技術適配經驗及生態共建啟示三方面展開,為開發者提供可復用的鴻蒙
    的頭像 發表于 07-30 15:35 ?507次閱讀
    餐飲服務與軟件創新的融合:解析海底撈APP的<b class='flag-5'>Flutter</b>鴻蒙<b class='flag-5'>開發</b>之路

    終于有人端側大模型說清楚了

    最近總聽到"端側大模型"這個詞,感覺很高大上,但到底是什么意思?和我們平時用的ChatGPT、DeepSeek各種大模型有什么區別?今天就來徹底搞清楚這件事。1、為什么叫
    的頭像 發表于 07-24 12:03 ?2400次閱讀
    終于有人<b class='flag-5'>把</b>端側大模型說清楚了

    使用 Flutter SDK 3.27.4構建HarmonyOS應用

    /flutter_fluttergit checkout -b oh-3.27.4-dev origin/oh-3.27.4-dev ? 下載下來之后就可以配置開發環境啦。 配置開發環境 配置好后
    的頭像 發表于 06-11 09:15 ?960次閱讀

    Flutter on Raspberry Pi:從入門到精通的完整指南!

    Flutter。通過遵循本文中概述的步驟,你將獲得在樹莓派上設置Flutter的知識和信心。無論你是初學者還是經驗豐富的Flutter開發者,本指南都將確保你對過程有清晰的
    的頭像 發表于 06-06 15:37 ?1585次閱讀
    <b class='flag-5'>Flutter</b> on Raspberry Pi:從入門到精通的完整指南!

    廣州頤能加入開源鴻蒙電力專委會

    近日,開源鴻蒙開發者大會2025在深圳盛大召開,生態伙伴、實踐專家、開發者等創新力量齊聚一堂,共同聚焦開源鴻蒙操作系統的技術革新與生態建設成果。廣州潤和頤能軟件技術有限公司(簡稱“廣州頤能”)受邀出席并正式加入開源鴻蒙電力專委會
    的頭像 發表于 06-03 16:32 ?1192次閱讀

    樹莓派與EthernetHat:用ChatGPT實現的MQTT智能家居項目!

    我們使用Pico、WIZnetW5100S和PicoBricks開發開發了MQTTRGB燈,通過ChatGPT4.0生成和優化代碼。項目所需組件硬件組件PicoBricks擴展板x1WIZnetW5100S-EVB-Picox
    的頭像 發表于 06-03 15:29 ?1.5w次閱讀
    樹莓派與EthernetHat:用<b class='flag-5'>ChatGPT</b>實現的MQTT智能家居項目!

    樹莓派遇上ChatGPT,魔法熱線就此誕生!

    盡管這種電話在幾十年前就已過時,但許多人都對旋轉撥號電話記憶猶新。這些舊電話,其實可以被改造成一個ChatGPT熱線。這個由PolluxLabs開發的項目,讓你可以將一部復古的旋轉撥號電話連接到樹莓
    的頭像 發表于 04-13 09:04 ?1.6w次閱讀
    樹莓派遇上<b class='flag-5'>ChatGPT</b>,魔法熱線就此誕生!

    和安信可Ai-M61模組對話?手搓一個ChatGPT 語音助手 #人工智能 #

    ChatGPT
    jf_31745078
    發布于 :2025年03月12日 15:56:59

    能和Ai-M61模組對話了?手搓一個ChatGPT 語音助手

    起猛了, 安信可的Ai-M61模組能說話了! 超低延遲實時秒回 ,對話超絲滑的那種,先來看一段VCR: 小安派+ChatGPT語音實測:對話絲滑到忘記對面是AI_ 人工智能的應用日益廣泛。 各家模型
    的頭像 發表于 03-12 11:57 ?1.2w次閱讀
    能和Ai-M61模組對話了?手搓一個<b class='flag-5'>ChatGPT</b> 語音助手