Android之Android studio实现智能聊天机器人

Android实现智能聊天机器人

最近在做项目中,突然来了灵感,要做一个聊天机器人.聊天机器人在很多大型App上都有使用,比如QQ群里的QQ小冰,淘宝京东等App上在没有人工客服之前会有机器人跟你聊天,根据你发的问题关键词,向你推荐一些答案,可以省下很多人工的时间以及减小服务器的压力

 

文章最后会给出下载地址,跟这个代码不同,不过也可以参考,可以实现功能

 

此功能主要原理

1.接入图灵机器人api,拼接上你输入框的消息;

2.根据api完成网络请求消息的接收与发送

3.完成布局页面

4.实现和你小蜜的对话羡慕

 

废话不多说,直接上图和代码

 

一:老规矩,先上效果图

 

二:注册图灵机器人,获取api

1.进入图灵机器人官网注册,已有账号的可直接登录

2.点击创建机器人

3.在创建机器人时,根据自己的需求,选择即可

4.创建好机器人之后会得到一个Api地址和一个ApiKey(如图所示)

5.下面就要拼接Api地址了(拼接方法如图所示)

拼接方法:

http://www.tuling123.com/openapi/api?key=你自己的apikey&info=你要发送的话&userid=你自己的唯一标示

 

三.下面就是具体实现的代码了

6.配置类,配置自己的图灵机器人(Config)

 

 

/*** author:Created by ZhangPengFei.* data: 2017/12/28* 配置类*/
public class Config {public static final String URL_KEY = "http://www.tuling123.com/openapi/api";public static final String APP_KEY = "38026ee35d614607b29c4ef3a56474a7";//此处是你申请的Apikey
}

 

 

 

 

 

 

7.格式化日期时间的工具类,用于显示时间(DateUtils)

 

import android.annotation.SuppressLint;
import java.text.SimpleDateFormat;
import java.util.Date;/*** author:Created by ZhangPengFei.* data: 2017/12/28* 时间格式化工具类*/public class DateUtils {@SuppressLint("SimpleDateFormat")public static String dateToString(Date date) {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");return df.format(date);}
}


8.HttpUtils网络请求类(HttpUtils)

 

 

import com.google.gson.Gson;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Date;/*** author:Created by ZhangPengFei.* data: 2017/12/28* http工具类*/
public class HttpUtils {/*** 发送消息到服务器** @param message :发送的消息* @return:消息对象*/public static ChatMessage sendMessage(String message) {ChatMessage chatMessage = new ChatMessage();String gsonResult = doGet(message);Gson gson = new Gson();Result result = null;if (gsonResult != null) {try {result = gson.fromJson(gsonResult, Result.class);chatMessage.setMessage(result.getText());} catch (Exception e) {chatMessage.setMessage("服务器繁忙,请稍候再试...");}}chatMessage.setData(new Date());chatMessage.setType(ChatMessage.Type.INCOUNT);return chatMessage;}/*** get请求** @param message :发送的话* @return:数据*/public static String doGet(String message) {String result = "";String url = setParmat(message);System.out.println("------------url = " + url);InputStream is = null;ByteArrayOutputStream baos = null;try {URL urls = new URL(url);HttpURLConnection connection = (HttpURLConnection) urls.openConnection();connection.setReadTimeout(5 * 1000);connection.setConnectTimeout(5 * 1000);connection.setRequestMethod("GET");is = connection.getInputStream();baos = new ByteArrayOutputStream();int len = -1;byte[] buff = new byte[1024];while ((len = is.read(buff)) != -1) {baos.write(buff, 0, len);}baos.flush();result = new String(baos.toByteArray());} catch (Exception e) {e.printStackTrace();} finally {if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}if (baos != null) {try {baos.close();} catch (IOException e) {e.printStackTrace();}}}return result;}/*** 设置参数** @param message : 信息* @return : url*/private static String setParmat(String message) {String url = "";try {url = Config.URL_KEY + "?" + "key=" + Config.APP_KEY + "&info="+ URLEncoder.encode(message, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}return url;}
}

 

 

9.请求api地址返回的数据(Result)

 

/*** author:Created by ZhangPengFei.* data: 2017/12/28* 映射服务器返回的结果*/
public class Result {private int code; // code码private String text; // 信息public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getText() {return text;}public void setText(String text) {this.text = text;}}


10.聊天消息的实体类(ChatMessage)

 

 

import java.util.Date;/*** author:Created by ZhangPengFei.* data: 2017/12/28* 聊天消息的实体类*/
public class ChatMessage {private String name;// 姓名private String message;// 消息private Type type;// 类型:0.发送者 1.接受者private Date data;// 时间public ChatMessage() {}public ChatMessage(String message, Type type, Date data) {super();this.message = message;this.type = type;this.data = data;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Type getType() {return type;}public void setType(Type type) {this.type = type;}public Date getData() {return data;}public void setData(Date data) {this.data = data;}public enum Type {INCOUNT, OUTCOUNT}
}

 

 

11.服务器发送与接收消息,左边布局的实现(layout_left)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:background="#f5f5f5"android:id="@+id/chat_left_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:paddingTop="5dp"android:textSize="14sp"android:text="2015/5/6   12:10:13" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical" ><ImageViewandroid:id="@+id/chat_left_image"android:layout_width="100dp"android:layout_height="100dp"android:src="@drawable/ser" /><TextViewandroid:id="@+id/chat_left_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="25dp"android:text="小蜜"android:textSize="16sp" /></LinearLayout><TextViewandroid:layout_marginLeft="10dp"android:background="@drawable/kefuborder"android:gravity="center"android:textSize="16sp"android:layout_gravity="center_vertical"android:id="@+id/chat_left_message"android:layout_width="220dp"android:layout_height="wrap_content"android:text="您好。" /></LinearLayout></LinearLayout>


12.客户端发送与接收消息,右边布局的实现(layout_right)

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/chat_right_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:background="#f5f5f5"android:paddingTop="5dp"android:text="2015/5/6   12:10:13"android:textSize="14sp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="right"android:orientation="horizontal" ><TextViewandroid:id="@+id/chat_right_message"android:layout_width="220dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginRight="10dp"android:background="@drawable/myborder"android:gravity="center"android:text="can i help me ?"android:textSize="16sp" /><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical" ><ImageViewandroid:id="@+id/chat_right_image"android:layout_width="100dp"android:layout_height="100dp"android:src="@drawable/m" /><TextViewandroid:id="@+id/chat_right_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="25dp"android:layout_marginTop="5dp"android:text="zengtao"android:textSize="16sp" /></LinearLayout></LinearLayout></LinearLayout>


13.主界面聊天页面布局的实现(activity_chat)

 

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/bac"android:orientation="vertical" ><!-- 头部 --><RelativeLayoutandroid:id="@+id/chat_top"android:layout_width="match_parent"android:layout_height="50dp"android:background="#3A4449" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="小蜜"android:textColor="#ffffff"android:textSize="18sp" /></RelativeLayout><!-- 底部 --><RelativeLayoutandroid:id="@+id/chat_bottom"android:layout_width="match_parent"android:layout_height="55dp"android:layout_alignParentBottom="true"android:background="#3A4449" ><EditTextandroid:id="@+id/chat_input_message"android:layout_width="240dp"android:background="@drawable/shuruborder"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="5dp"android:gravity="center" /><Buttonandroid:background="@drawable/btnborder"android:id="@+id/chat_send"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_toRightOf="@id/chat_input_message"android:text="发送"android:textColor="#FFFFFF"android:textSize="18sp" /></RelativeLayout><!-- 中间 --><ListViewandroid:id="@+id/chat_listview"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@id/chat_bottom"android:layout_below="@id/chat_top"android:divider="@null"android:dividerHeight="3dp" ></ListView></RelativeLayout>


14.聊天消息的适配器(ChatMessageAdapter)

 

/*** author:Created by ZhangPengFei.* data: 2017/12/28*/import android.annotation.SuppressLint;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;import java.util.List;import weektest.project.R;/*** 聊天信息适配器** @author zengtao 2015年5月6日 下午2:25:10*/
public class ChatMessageAdapter extends BaseAdapter {private List<ChatMessage> list;public ChatMessageAdapter(List<ChatMessage> list) {this.list = list;}@Overridepublic int getCount() {return list.isEmpty() ? 0 : list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic int getItemViewType(int position) {ChatMessage chatMessage = list.get(position);// 如果是接收消息:0,发送消息:1if (chatMessage.getType() == ChatMessage.Type.INCOUNT) {return 0;}return 1;}@Overridepublic int getViewTypeCount() {return 2;}@SuppressLint("InflateParams")@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ChatMessage chatMessage = list.get(position);if (convertView == null) {ViewHolder viewHolder = null;// 通过ItemType加载不同的布局if (getItemViewType(position) == 0) {convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_left, null);viewHolder = new ViewHolder();viewHolder.chat_time = (TextView) convertView.findViewById(R.id.chat_left_time);viewHolder.chat_message = (TextView) convertView.findViewById(R.id.chat_left_message);} else {convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_right, null);viewHolder = new ViewHolder();viewHolder.chat_time = (TextView) convertView.findViewById(R.id.chat_right_time);viewHolder.chat_message = (TextView) convertView.findViewById(R.id.chat_right_message);}convertView.setTag(viewHolder);}// 设置数据ViewHolder vh = (ViewHolder) convertView.getTag();vh.chat_time.setText(DateUtils.dateToString(chatMessage.getData()));vh.chat_message.setText(chatMessage.getMessage());return convertView;}/*** 内部类:只寻找一次控件** @author zengtao 2015年5月6日 下午2:27:57*/private class ViewHolder {private TextView chat_time, chat_message;}
}


15.主java的实现(ChatActivity)

 

 

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;import java.util.ArrayList;
import java.util.Date;
import java.util.List;import weektest.project.R;public class ChatActivity extends Activity {private List<ChatMessage> list;private ListView chat_listview;private EditText chat_input;private Button chat_send;private ChatMessageAdapter chatAdapter;private ChatMessage chatMessage = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_chat);initView();initListener();initData();}// 1.初始试图private void initView() {// 1.初始化chat_listview = (ListView) findViewById(R.id.chat_listview);chat_input = (EditText) findViewById(R.id.chat_input_message);chat_send = (Button) findViewById(R.id.chat_send);}// 2.设置监听事件private void initListener() {chat_send.setOnClickListener(onClickListener);}// 3.初始化数据private void initData() {list = new ArrayList<ChatMessage>();list.add(new ChatMessage("您好,小乖为您服务!", ChatMessage.Type.INCOUNT, new Date()));chatAdapter = new ChatMessageAdapter(list);chat_listview.setAdapter(chatAdapter);chatAdapter.notifyDataSetChanged();}// 4.发送消息聊天private void chat() {// 1.判断是否输入内容final String send_message = chat_input.getText().toString().trim();if (TextUtils.isEmpty(send_message)) {Toast.makeText(ChatActivity.this, "对不起,您还未发送任何消息",Toast.LENGTH_SHORT).show();return;}// 2.自己输入的内容也是一条记录,记录刷新ChatMessage sendChatMessage = new ChatMessage();sendChatMessage.setMessage(send_message);sendChatMessage.setData(new Date());sendChatMessage.setType(ChatMessage.Type.OUTCOUNT);list.add(sendChatMessage);chatAdapter.notifyDataSetChanged();chat_input.setText("");// 3.发送你的消息,去服务器端,返回数据new Thread() {public void run() {ChatMessage chat = HttpUtils.sendMessage(send_message);Message message = new Message();message.what = 0x1;message.obj = chat;handler.sendMessage(message);};}.start();}@SuppressLint("HandlerLeak")private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {if (msg.what == 0x1) {if (msg.obj != null) {chatMessage = (ChatMessage) msg.obj;}// 添加数据到list中,更新数据list.add(chatMessage);chatAdapter.notifyDataSetChanged();}};};// 点击事件监听OnClickListener onClickListener = new OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.chat_send:chat();break;}}};
}

 

 

17.当然别忘记了权限与依赖问题

   <uses-permission android:name="android.permission.INTERNET" /> <!-- 网络权限 --> 

 

	compile 'com.google.code.gson:gson:2.2.4'//Gson解析依赖

 

 

 

 

18.写了这么多,就把图片和绘制的形状一块给你们吧,

 

①.输入框的样式(shuruborder)

 

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><strokeandroid:width="1dp"android:color="#FFF" /><solid android:color="#FFF" /><corners android:radius="5dip" /></shape>

 

②.小蜜聊天框的样式(kefuborder)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><strokeandroid:width="1dp"android:color="#5188DE" /><solid android:color="#A5D932" /><corners android:radius="8dip" /></shape>

 

③.自己聊天框的样式(myborder)

 

 

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><strokeandroid:width="1dp"android:color="#787878" /><solid android:color="#FFFFFF" /><corners android:radius="8dip" /></shape>


④.发送按钮的样式(btnborder)

 

 

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><solid android:color="#CCCCCC"/><corners android:radius="5dip"/></shape>

 

⑤.用到的图片

背景图(bac.png)

小蜜头像(ser.png)

 

 

 

自己的头像(m.png)

 

19.现在的话我们的造人计划已经基本完成了,现在就可以跟你造好的聊天玩耍,

自己造的,玩的时候小心一点,玩坏就不好了.

 

下载地址

Android之AndroidStudio实现智能机器人聊天

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/29503.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像复原之维纳滤波

基本原理 图像复原是图像处理的重要组成部分&#xff0c;由于图像在获取和传输过程中通常不可避免的要受到一些噪声的干扰&#xff0c;因此在进行其他图像处理以及图像分析之前&#xff0c;应该尽量将图像复原到其原始真实状态。图像复原的关键问题是在于建立退化模型。图像退…

图像复原

1图像复原的而理论模型 定义&#xff1a;在成像过程中&#xff0c;由于成像系统各种因素的影响&#xff0c;可能使获得的图像不是真实景物的完善影像。图像在形成、传播和保存过程中使图像质量下降的过程&#xff0c;称为图像退化。图像复原就是重建退化的图像&#xff0c;使其…

UBI.city白皮书发布与空投领取方法

在经历了至少5次的全面推翻与重构后&#xff0c;UBI.city的方案终于可以发布了。 UBI.city简介 UBI.city是去中心化组织的动态治理协议&#xff0c;白皮书可在官网 www.ubi.city 中查阅。 随着The DAO在2016年募集了1170万枚ETH&#xff08;价值约2.45亿美元&#xff09;&am…

WhatsApp被禁用操作教程|实操WhatsApp解封的过程|2023三月

我是上周被WhatsApp被禁用了&#xff0c;按照网上的方法&#xff0c;点击Support提交&#xff0c;会自动跳转一个邮件&#xff0c;发送到WhatsApp官方&#xff0c;我满心欢喜地等待解封&#xff0c;以为会像大家说的那样&#xff0c;第二天可以解封。 就是点击那个 支持 提交了…

微信网页版解封方法

最近&#xff0c;微信又推出了网页版的【文件传输助手】&#xff0c;也就是说&#xff0c;无需登录客户端的微信&#xff0c;即可进行文件或图片的传输。 网址是 https://filehelper.weixin.qq.com网址巨长&#xff0c;咋一看&#xff0c;又长又难记&#xff0c;玩个锤子 经…

微信小程序-获取用户头像信息以及修改用户头像

这里主要用到button的open-type功能&#xff0c;官网已有说明&#xff1a; 给button设置open-type"chooseAvatar"&#xff0c;来使bindchooseavatar方法生效&#xff0c;在bindchooseavatar指定的函数中获取用户的头像信息 <button open-type"chooseAvata…

小程序中新版本的获取用户头像与昵称:bind:chooseavatar

前言&#xff1a; 自从微信官方把获取用户昵称与头像的功能改动以后&#xff0c;给我们开发和用户的操作又增加了很多负担&#xff0c;但是没办法&#xff0c;只能使用最新的使用方法了。 小程序用户头像昵称获取规则调整公告 新版实现效果&#xff1a; 注意&#xff0c;真机…

关于QQ群头像以及微信讨论组头像的工具类

QQ群头像以及微信讨论组头像工具类介绍 介绍&#xff1a; 由于段时间公司项目需求&#xff0c;在翻了网上很多代码后发现&#xff0c;很多人用的是自定义View的办法来实现此类头像的效果&#xff0c;但是&#xff0c;这样一来就必须改变项目中原有的控件&#xff0c;而且当需要…

桌面宠物!

电脑桌宠&#xff1a; 天选姬 下载地址&#xff1a;https://www.asus.com.cn/supportonly/FA506QR/HelpDesk_download/ 选择系统&#xff0c;点击软件程序下的查看更多&#xff0c;选择天选姬桌面大鹅&#xff08;Desktop Goose&#xff09; 下载地址&#xff1a;https://wwu.…

微信小程序最新调用用户头像以及昵称

众所周知&#xff1a;微信小程序开发是面对“公告”编程&#xff0c;小程序的api更新迭代之快&#xff0c;让人叫苦不堪&#xff0c;&#xff0c;&#xff0c; 最近开发小程序项目时&#xff0c;获取用户头像和昵称的方式发生了很大的改变&#xff1a; 它居然绑定到一个 butt…

微信小程序新版头像昵称API [保存用户头像到服务器]

根据微信官方文档的说法&#xff0c;2022年10月之后&#xff0c;原本的获取昵称和头像的api&#xff0c;也就是wx.getUserProfile和wx.getUserInfo将停止支持&#xff0c;在那之后发布和更新的小程序必须停止使用这两个api。 这两个api获得的用户头像均为一个url&#xff0c;指…

相片怎么变成漫画头像?分享个好用的处理工具

①.首先我们在电脑上打开任意浏览器&#xff0c;搜索进入改图在线做图页面。进入之后&#xff0c;可以看到上方的导航栏中有“去玩特效”这个导航&#xff0c;点击这里或者首页推荐工具下方的“照片特效”进入即可。 ②.进入照片特效页面后&#xff0c;这里有很多中卡通人脸特效…

taro小程序用户头像昵称获取

微信发布《小程序用户头像昵称获取规则调整公告》之后&#xff0c;无法再使用getUserProfile获取用户头像和昵称&#xff0c;因此小程序官方提供了头像昵称填写功能来完善个人资料。 对button添加open-type"chooseAvatar" bind:chooseavatar"onChooseAvatar&qu…

聊天截图厚码也不安全,大神写了算法分分钟给你还原

金磊 发自 凹非寺量子位 | 公众号 QbitAI 讲个恐怖的故事。 早上跟同事在微信闲谈&#xff0c;聊起了一位女同事最近的变化。 结果他反手就把文字打上马赛克&#xff0c;截图丢进了群里&#xff1a; 还欠欠儿地补了一刀&#xff1a; XXX&#xff0c;他说你坏话了呦~ 万万没想到…

深度对话三维家 | 4万亿市场,家装设计会诞生AIGC首个杀手级赚钱应用吗?

2022年&#xff0c;ChatGPT的火爆登场&#xff0c;超级烧钱的AI大模型赛道随即进入“千模大战”&#xff0c;“战况”惨烈异常。 时间来到2023年年中&#xff0c;AIGC热度不减&#xff0c;虽然创业者还在汹涌入局。究竟如何使用AIGC技术&#xff1f;AIGC技术可以在哪些场景率先…

2022年AIGC简单展望

2022 对于社会是不平凡的一年&#xff0c;而对于科技也同样是不平凡的一年。人们在社会中遭受着失意&#xff0c;却在科技中寻找希冀。对于一个命运共同体&#xff0c;它想着如何破除衰退&#xff0c;而同样对于一个活生生的个体或者家庭&#xff0c;他们也在摸索改变命运的机遇…

资本观望,大厂入局,海外大模型血脉压制……国内AIGC创业者的机会在哪里?...

图片来源&#xff1a;由无界 AI生成 A股AI概念股直线式拉涨&#xff0c;技术大牛带资进组分分钟成数十亿人民币独角兽&#xff0c;互联网巨头争抢着入局&#xff0c;政府各类扶持政策持续出台&#xff0c;媒体动不动就是万亿风口&#xff0c;500万年薪难招AIGC大牛……2022年以…

孔乙己新编

原创&#xff1a;刘教链 * * * 好币App的UI&#xff0c;是和别个儿不同的&#xff1a;开屏画面过后&#xff0c;扑面而来的是浓浓的山寨风&#xff0c;可以随时梭上一把。黄袍加身的人&#xff0c;傍午傍晚送完外卖&#xff0c;每每换上十几个u&#xff08;注&#xff1a;指USD…

裁员一万转身拥抱AI,Meta又要改名了

作者 | Eric 编辑 | Zuri‍‍‍‍‍‍ 首图来源&#xff1a;The New York TImes 美国科技四巨头中&#xff0c;如今就属Meta最显落寞了。 前不久&#xff0c;苹果CEO库克到访中国&#xff0c;不管是跟普通顾客在三里屯打成一片&#xff0c;还是跟科技部长会面&#xff0c;都受到…

巴比特 | 元宇宙每日必读:训练速度提升15倍,微软开源Deep Speed Chat,用户可通过“傻瓜式操作”训练大语言模型...

摘要&#xff1a;4月12日&#xff0c;微软宣布开源了Deep Speed Chat&#xff0c;用户可通过Deep Speed Chat提供的“傻瓜式”操作&#xff0c;以最短的时间、最高效的成本训练类ChatGPT大语言模型&#xff0c;这标志着一个人手一个ChatGPT的时代要来了。据悉&#xff0c;Deep …