Fork me on GitHub
COLORFUL 一枚数字艺术家的自留地
2023 - 03 - 11

(图片来自 Look What ChatGPT Did to My Online Dating Profile - CNET)

前言

ChatGPT 是什么、它能做什么、甚至如果你想深入了解它的技术底层原理,那么,我相信此时此刻的你,在互联网的任何一个角落找到一篇 Paper 来快速了解它已经是一件非常容易的事情了,因为毫不夸张地说,它正在改变整个世界。

当然,最酷的方式一定是,你可以直接通过 ChatGPT 来了解 ChatGPT。今天铺天盖地的关于它的文章背后,体现的主流核心思想最多的关键字我认为是: 崇拜 。无数的人和事情都在跟进它、把玩它、研究它。直到此刻,它的热度依旧处于全网顶格状态,甚至在最近的一些来自硅谷的报道中,我隐约感觉到,硅谷好像只剩下 AI 了,几大巨头甚至不惜直接宣布解散元宇宙、Web 3.0 等命题组也要全身心押宝它。

国内的各大流量媒体更是不吝啬各种营销术语,对其各种浮夸表述,导致它的能力在坊间越传越离谱,几乎吹嘘它为无所不能。

如此神话、盲目崇拜之风的氛围下,作为一名十多年工作经验的程序员,同时又身处数字化转型的产业互联网赛道,我觉得当下很有必要理性、冷静地对它进行一番打量。

因此,在深度使用了一段时间并开发了一个集成 OpenAI API 的 Dingtalk 机器人服务后,我也终于自觉有底气来讲一讲自己对它的一些看法,另外一个补充背景是,笔者所在的产业目前对这块引起了高度的重视,本文也作为一篇偏向工程实践角度的调研报告来呈现,以上是我写下这篇文章的动力来源。

image.png

目前,它拥有如下 Features

  • 集成了 GPT-3 模型 API(已更新为 ChatGPT 同款 3.5 Turbo 模型),支持它的文本生成特性
  • 集成了 DALL.E 2 模型,使用 img-> 固定 prompt 唤醒词,支持它的图片生成特性

但是目前该机器人有个最大的问题就是没有接入会话式感知能力的 API ,下文我会提及原因。

如果说,AI 能力是 ChatGPT 的大脑,那么今天配套的 ChatGPT 的产品 chat.openai.com 就是它的身体,即它与人类直接交互的部分,它的重要性不言而喻。

因此,本文将从这个角度切入,随后再看向它的大脑。

2022 - 12 - 31

目前,我们的旅程一直很舒适、惬意,路况一直很好,食物也充足、美味…… 事实上,如果我没经历过那些前所未有的糟糕透顶的事情,我会说,麻烦的事情才刚刚开始呢。 - 塔姆森。唐纳(Tamsen Donner)1846.6.16

前言

今天的科技变革速度远远超乎过往所有的「理所当然」和「想象」。

相比单纯记录下《爆裂》的读后感,我更愿意从另外的角度谈谈我的思考和理解,也许还会穿插一些我认为有趣的故事。因此请允许我调皮地将本文的标题改为「杂谈」。最近有刷到孟晚舟女士的一个短视频,视频中提到,她在谈及自己初三的儿子未来的专业选择和职业规划的时候说:“不管你将来选择什么样的职业,一定不要选择和机器竞争的职业”。

What?!和机器竞争? 我想,无论作为启蒙教育者的父母,还是专业教育者,很少会从这个不可思议的角度去发出这样的 “劝告”。这里的关键问题是,我们有多少人开始真正意识到这个问题

世界从未停止变革

现在,让我们抛开一些非常时髦的概念和名词,尝试静下心来挖掘一下发生在日常生活、工作中随处可见的案例,来以此感受「世界规则的颠覆」。

了解我的人应该知道我对「软件工具」的痴迷程度,从 08 年成为独立博主开始,经历了那个独立博客百花齐放的 Web 2.0 时代,那时候的互联网还没有正式进入无线时代,各大商业软件公司以抢占用户的电脑桌面为主,然而更加令人敬畏的是一群 Hero 在这个自由的世界里分享着各种各样的工具,分享精神就是 WWW 的灵魂。如果你曾痴迷于订阅「异次元」、「小众软件」、「善用佳软」等博客,你应该会对这些宝藏博客至今记忆犹新,他们中有些至今仍然在保持着稳定、高频的内容更新。

如果你是一个跟我一样的狂热爱好者,那我坚信我们对 Small is powerfull 会有共鸣,如今,你可以从你的口袋里随时拿出一个利器帮助你自动化地、高效地解决很多实际问题,并且他们运行在 Everytime & Everywhere

但是我想强调的是,关键的并不在于你有多少工具,而在于 你开始培养这样的意识和工作方式善用 工具、擅用 工具,毫不夸张地说,这个认知的变化,会给你带来巨变。

这些是「机器」吗?我想,是的。

值得深入探讨的是我们作为「Human」和「Machine」(以下均以这两个关键字提及)的协同关系,或者叫人机交互关系。

在此之前,请允许我抛砖引玉,通过一些过往的经历和认知,来阐述一下《爆裂》中提到的 九大法则我并不打算 “循规蹈矩” 地写这篇文章:去罗列这九大法则然后一一解释。我会像写故事一样将 这些法则穿插解释在其中,因为我特别希望他们更加生动一些,而不是成为某种新的教条。就像这些法则也自然地穿插在我们这个世界一样,他们从来也都不是孤立的。在我看来,这些法则本身并不 “高大上”,它们其实从头到尾一直在,所以,总结和思考它们的意义会更加靠谱一点,而不是沉迷于它们。

2022 - 12 - 29

I was looking for a car to model, and I choose to model an old European car. I was inspired by the Peugeot 205 GTI. It’s an old french car produced from 1982 to 1998 that you can still see in France, Belgium and some others European countries. Made with Blender and Substance Painter.

2022 - 12 - 29

分享一枚非常实用的 google app script,需要的同学可以将其安装于 https://script.google.com/; 它支持全自动调度清理任务,清理任务主要根据 gmail 中的指定搜索条件。

2022 - 05 - 31

[mbm] = (🌞 -> 🌛 || 🌛 -> 🌞)

Lyrical as usual, Apple said about Dark Mode that it’s a “dramatic new look that helps you focus on your work,’’ as well as a “distraction-free environment that’s easy on the eyes — in every way”.

Google was much more pragmatic, saying Dark Theme can “reduce power usage by a significant amount”, “improve visibility for users with low vision and those who are sensitive to bright light” and “make it easier for anyone to use a device in a low-light environment”.

👦 Archer: Dark Mode IS NOT Dark Design or Dark UI in Javascript.

What is mbm ?

It’s short name for CSS Mix Blend Mode.

About

🌞 🌛 Play with your Dark Mode.

Quick Start

const mbm = MixBlendMode({
  backgroundColor: "#FFFFFF",
  enable: true,
});

// toggle
mbm.toggle();

// show
mbm.show();

// hide
mbm.hide();

// get auto-increment zIndex
mbm.izIndex();

UI Controller

Default UI Controller

MixBlendMode.UIController().render()

You can write your own ui controller

const yourController = MixBlendMode.UIController((MixBlendMode) => {
  // controller logic
});

Examples

npm run dev

Reference

2022 - 01 - 20

Archer 摄制于 2022.1.8 19:38 北京 蓝色港湾

2016 - 04 - 28

v-circle

A collection of circle progress with Vue.js.

  • Vue 1.0+ use v-circle 0.1+
  • Vue 2.0+ use v-circle 0.2+

Demos & Examples

Live Demo: xiaoa.name/v-circle

2016 - 04 - 10

源码阅读系列的开篇就不多废话了,开门见山。

首先看添加中间件的入口 app.use 的源码

/**
 * Use the given middleware `fn`.
 *
 * @param {GeneratorFunction} fn
 * @return {Application} self
 * @api public
 */

app.use = function (fn) {
  if (!this.experimental) {
    //es7 async functions are not allowed,
    //so we have to make sure that `fn` is a generator function
    assert(
      fn && "GeneratorFunction" == fn.constructor.name,
      "app.use () requires a generator function"
    );
  }
  debug("use % s", fn._name || fn.name || "-");

  // 主要就是做这个事情
  // 根据上面的 assert,这里的 fn 均为 generator function
  this.middleware.push(fn);
  return this;
};