作者归档:songtianlun

【Ai Agent】智能体实验之城市天气画报

计划进行一系列 AI Agent 实验,欢迎交流。

相关信息

  • 平台: 自建 Dify
  • 类型:AI Agent
  • 使用LLM:
    • gpt-4o-mini
    • Dall-e 3
  • 参考:扣子 的城市天气画报模板。

DSL

app:
  description: ''
  icon: 🤖
  icon_background: '#FFEAD5'
  mode: agent-chat
  name: 城市天气画报
  use_icon_as_answer_icon: false
kind: app
model_config:
  agent_mode:
    enabled: true
    max_iteration: 5
    prompt: null
    strategy: function_call
    tools:
    - enabled: true
      provider_id: gaode
      provider_name: gaode
      provider_type: builtin
      tool_label: 天气预报
      tool_name: gaode_weather
      tool_parameters:
        city: ''
    - enabled: true
      provider_id: dalle
      provider_name: dalle
      provider_type: builtin
      tool_label: DALL-E 3 绘画
      tool_name: dalle3
      tool_parameters:
        n: ''
        prompt: ''
        quality: ''
        size: ''
        style: ''
  annotation_reply:
    enabled: false
  chat_prompt_config: {}
  completion_prompt_config: {}
  dataset_configs:
    datasets:
      datasets: []
    reranking_enable: true
    retrieval_model: multiple
    top_k: 4
  dataset_query_variable: ''
  external_data_tools: []
  file_upload:
    allowed_file_extensions:
    - .JPG
    - .JPEG
    - .PNG
    - .GIF
    - .WEBP
    - .SVG
    - .MP4
    - .MOV
    - .MPEG
    - .MPGA
    allowed_file_types: []
    allowed_file_upload_methods:
    - remote_url
    - local_file
    enabled: false
    image:
      detail: high
      enabled: false
      number_limits: 3
      transfer_methods:
      - remote_url
      - local_file
    number_limits: 3
  model:
    completion_params:
      stop: []
    mode: chat
    name: gpt-4o-mini
    provider: openai
  more_like_this:
    enabled: false
  opening_statement: 回复 1 开始创作今日城市天气画报。
  pre_prompt: '查找城市 {{city}} 今天的天气情况,生成一段简单的话描述这个场景,提供给 dalle 绘制一幅图片。

    '
  prompt_type: simple
  retriever_resource:
    enabled: true
  sensitive_word_avoidance:
    configs: []
    enabled: false
    type: ''
  speech_to_text:
    enabled: false
  suggested_questions: []
  suggested_questions_after_answer:
    enabled: false
  text_to_speech:
    enabled: false
    language: ''
    voice: ''
  user_input_form:
  - text-input:
      default: ''
      label: 城市
      max_length: 48
      required: true
      variable: city
version: 0.1.5

效果展示

界面:

图片

生成效果:

广州今日状态

测试 DEMO

仅展示效果,为了让更多人体验到效果,请勿滥用。

链接:https://dify.skybyte.me/chat/eg0ZPHqgCyeWF1Mb

iframe 插入不太正常,先不放了。

收藏一个上古软件,在 Linux 终端上使用行编辑器 ed

这个看似简单的编辑器为用户提供了许多易于学习和使用的命令。 这款产生自资源极其有限时期的产物,似乎还很有助于理解 vi/vim 和 emacs 的一些设计。

GNU ed 命令是一个行编辑器。它被认为是标准的 Unix 文本编辑器,因为它是首个出现在 Unix 的文本编辑器,并且它曾经无处不在,你在任何一个 POSIX 系统中都能找到它(通常来说,你现在也可以)。在某种程度上,你可以很容易看出来它是第一个文本编辑器,因为它在许多方面的功能都十分基础。和其他大多数的文本编辑器不同,它不会打开一个属于自己的窗口或显示区域,事实上,在默认情况下,它甚至不会提示用户输入文字。从另一个方面来说,它在交互功能上的缺失也可以成为一个优点。它是一个多功能的编辑器,你可以用简短的命令控制它,无论是在交互式的命令行中,还是在编写的 shell 脚本里。

安装 ed

如果你正在使用 Linux 或者 BSD 的话,你很可能已经默认安装了 ed(在 Linux 上是 GNU 版 ed,而在 BSD 上是 BSD 版 ed)。但是,一些极简的环境可能没有包括 ed,这也没关系,你的发行版的软件仓库中很可能有 ed 可供下载。macOS 默认安装了 BSD 版 ed。

# archlinux
$ sudo pacman -S ed

启动 ed

当你启动 ed 的时候,你的终端提示符不见了,看起来好像是 ed 停止运行了。其实它没有,它只是在等待你输入指令而已。

$ ed

为使 ed 显示更详细的信息,你可以输入命令 p 让它返回一个提示符:

$ ed
p
?

这个问号(?)是默认的 ed 提示符。

缓冲区

当 ed 激活时,你其实是在和一个叫 缓冲区buffer 的东西打交道。缓冲区是内存中的一块区域。你并不会直接编辑文件,而是在编辑它对应的缓冲区。当你退出 ed 却没有把修改保存到磁盘的文件上时,所有的修改都会丢失,因为它们只在缓冲区里存在。(这对于一个已经习惯了初始的 草图缓冲区scratch buffer 的资深 Emacs 用户可能很耳熟。)

使用 ed 输入文本

启动 ed 后,你处于命令模式。这意味着你可以向编辑器发送指令,比如让它显示一个提示符,而不是空白区域。你可以使用 a 命令开始附加文本到当前的缓冲区,使用一个实心的点 . 来终止输入。比如,下面的这个例子往缓冲区里附加了两行文字(“hello world” 和 “hello ed”):

?
a
hello world
hello ed
.

使用点 . 终止输入后,你将回到命令模式。

查看缓冲区

怎样查看当前缓冲区里都有什么呢?你可以输入想要查看的行号,也可以使用 ,p 命令来显示所有的行:

?
1
hello world
2
hello ed
,p
hello world
hello ed

写入文件

如果你现在对文本很满意,你可以使用 w 命令把缓冲区写入到文件中,后面跟上目标文件名:

?
w example.txt
19

写操作后显示的那个数字代表着写入到文件中的字符数。

读取文件

除了使用 ed 来读取文本,你也可以使用 r 命令把一个已经存在的文件加载到到缓冲区里:

?
r myfile.txt

另外,你也可以在启动 ed 时,在它后面加上你想要加载到缓冲区里的文件名:

$ ed myfile.txt

编辑缓冲区

鉴于 ed 是一个文本编辑器,你当然可以使用一种特殊的语法来编辑缓冲区里的文本。使用 sed 或 vim 的用户或许会觉得这个语法很熟悉。假设现在缓冲区里已经加载了一个文件:

$ ed myfile.txt
,p
This is an example document.
There is some text, but not much.
There is some errors, but not much.

如果你要把第一句话中的 document 修改为 file,你可以先选择目标行(1),然后使用 s 命令调用搜索函数,后面跟着搜索文本和替换文本:

?
1
This is an example document.
s/document/file/
1
This is an example file.

如果你要编辑其他行,步骤也是一样的,只需提供一个不同的行号即可:

?
3
There is some errors, but not much.
s/is/are/
s/much/many/

你可以使用 ,p 命令来看到你对缓冲区的历史编辑记录:

This is an example file.
There is some text, but not much.
There are some errors, but not many.

当然,这些修改只存在于缓冲区里。你如果在 ed 编辑器外查看这个文件,你只会看到原始的文本:

$ cat myfile.txt
This is an example document.
There is some text, but not much.
There is some errors, but not much.

如果你要把这些修改保存回文件中,使用 w 命令即可:

w myfile.txt
258

清空缓冲区

如果想要得到一个新的缓冲区,以此来打开一个新的文件,或者把一个新的文件加载到不同的环境中,你可以使用 c 命令。使用这个清空缓冲区后,什么也不会输出,因为缓冲已经是空的了:

c
,p

退出

如果要退出当前的 ed 会话,你可以使用 q 命令。它并不会给你一个保存缓冲区的机会,所以你要确保自己在这之前执行了保存操作。

尝试一下 ed 吧

ed 还可以做到很多事情,学习 ed 可以让你知道它和部分的 vim 是如何工作的。我并没有尝试使用 ed 来写这篇文章,老实说,我也不认为它是通常意义上的最佳文本编辑器。但是,ed 仍然是一个出色的编辑器。通过阅读它的文档,你可以很轻松地学会它。在 GNU 系统上,你可以使用 info ed 来查看它的操作手册。

References

Buildah 简明教程:让镜像构建更轻量,告别 Docker 依赖

来源:Buildah 简明教程:让镜像构建更轻量,告别 Docker 依赖

Buildah 是一个专注于构建 OCI 镜像的工具,Buildah CLI 工具使用底层 OCI 技术实现(例如 containers/image1 和 containers/storage2)。

OCI 三剑客包括:

  • 专注于镜像构建的 Buildah
  • 专注于镜像和容器管理的 Podman
  • 专注于镜像操作和管理(尤其是涉及远程仓库的操作)的 Skopeo

这三者一起形成了一个 Dockerless 的容器生态,支持构建、管理、推送和操作镜像和容器,且不依赖 Docker 守护进程。

注意:三者之间功能是有一定重复的,特别是 Buildah 和 Podman,不过各自专注点不同,建议合理搭配使用。

1. 什么是 Buildah?

Buildah 是一个专注于构建 OCI 镜像的工具,Buildah CLI 工具使用底层 OCI 技术实现(例如 containers/image3 和 containers/storage4)。

官方描述原文:

A tool that facilitates building OCI images.the Buildah command line tool (CLI) and the underlying OCI based technologies (e.g. containers/image5 and containers/storage6)

Buildah CLI 工具则基于这些项目实现了构建、移动、管理镜像的功能:

  • containers/image project provides mechanisms to copy (push, pull), inspect, and sign container images
  • containers/storage project provides mechanisms for storing filesystem layers, container images, and containers

那么问题来了:构建镜像已经有 Docker 了为什么还需要 Buildah?

Buildah 是无守护进程以及可以 rootless 运行的,相比于 docker 更加轻量级。

如果使用 Buildah 来代替 Docker 镜像构建能力,由于可以无守护进程以及可以 rootless 运行,因此即使在容器中使用也非常方便,对于 Devops 来说是一个很好的选择。

即:相较于现有的构建工具, Buildah 更轻量级,做到了 Dockerless 和 Rootless。

2. 安装 Buildah

官方文档:buildah#install.md7

Buildah 为各大发行版都提供了对应的 Package,可以方便的通过 yum、apt-get、dnf 等等工具安装,当然也可以通过源码编译安装。

推荐使用发行版自带的包管理工具安装:

# CentOS  
sudo yum -y install buildah  

# Ubuntu 20.10 and newer  
sudo apt-get -y update  
sudo apt-get -y install buildah  

# Fedora  
sudo dnf -y install buildah

Demo 用的 Ubuntu22.04

sudo apt-get -y update  
sudo apt-get -y install buildah

查看 Buildah 版本

ps:系统版本比较低,所以安装的 buildah 也比较旧

root@builder-ubuntu:~# buildah version  
Version:         1.23.1  
Go Version:      go1.17  
Image Spec:      1.0.1  
Runtime Spec:    1.0.2-dev  
CNI Spec:        0.4.0  
libcni Version:  
image Version:   5.16.0  
Git Commit:  
Built:           Thu Jan  1 08:00:00 1970  
OS/Arch:         linux/amd64  
BuildPlatform:   linux/amd64

3. 基础功能

使用命令式构建镜像

Buildah 相对于 Dockerfile 提供了强大的命令式构建方式,将 Dockerfile 指令变成一条一条的命令,为我们构建镜像提供了新的选择:

# 拉取镜像,类似 Dockerfile 中的 FROM  
container=$(buildah from nginx)  
# 类似 Dockerfile 中的 RUN  
buildah run $container -- bash -c 'echo "hello world" > /usr/share/nginx/html/index.html'  
# 提交保存镜像  
buildah commit $container nginx-hello

输出如下:

[root@builder ~]# container=$(buildah from nginx)  
[root@builder ~]# buildah run $container -- bash -c 'echo "hello world" > /usr/share/nginx/html/index.html'  
[root@builder ~]# buildah commit $container nginx-hello  
Getting image source signatures  
Copying blob c0f1022b22a9 skipped: already exists  
Copying blob fc00b055de35 skipped: already exists  
Copying blob 2c3a053d7b67 skipped: already exists  
Copying blob b060cc3bd13c skipped: already exists  
Copying blob 8aa4787aa17a skipped: already exists  
Copying blob c28e0f7d0cc5 skipped: already exists  
Copying blob d32d820bcf1c skipped: already exists  
Copying blob c6a7a8084917 done   |  
Copying config 19de2f1f4a done   |  
Writing manifest to image destination  
19de2f1f4afc6e0ff9da11e9dfb988619f4bcd1d388ea4c18413ab574487a0d4

查看到刚才构建的镜像

[root@builder ~]# buildah images  
REPOSITORY                          TAG       IMAGE ID       CREATED          SIZE  
localhost/nginx-hello               latest    19de2f1f4afc   22 seconds ago   196 MB

通过 Dockerfile 构建镜像

当然,Buildah 也支持通过 Dockerfile 构建镜像,这个应该是比较常见的用法。

准备一个 Dockerfile

FROM nginx  
RUN echo "Hello World" > /usr/share/nginx/html/index.html  
EXPOSE 80

使用 buildah 构建镜像

buildah build -t nginx-hello2 .

输出如下

[root@builder ~]# buildah build -t nginx-hello2 .  
STEP 1/3: FROM nginx  
STEP 2/3: RUN echo "Hello World" > /usr/share/nginx/html/index.html  
STEP 3/3: EXPOSE 80  
COMMIT nginx-hello2  
Getting image source signatures  
Copying blob c0f1022b22a9 skipped: already exists  
Copying blob fc00b055de35 skipped: already exists  
Copying blob 2c3a053d7b67 skipped: already exists  
Copying blob b060cc3bd13c skipped: already exists  
Copying blob 8aa4787aa17a skipped: already exists  
Copying blob c28e0f7d0cc5 skipped: already exists  
Copying blob d32d820bcf1c skipped: already exists  
Copying blob eec64f0b2723 done   |  
Copying config 1b63bdb270 done   |  
Writing manifest to image destination  
--> 1b63bdb270c1  
Successfully tagged localhost/nginx-hello2:latest  
1b63bdb270c1066520a5ae37dcea3d5c3b9c5e9af581e76bf1287f9f79f77f03

用法和 Docker build 基本一致,迁移的话也没有太多学习成本。

4. 配置文件

同为 OCI 三剑客,Podman 、Buildah 配置文件也是通用的。

您可以在以下目录中找到默认的 Podman 、Buildah 的配置文件:

  • 全局配置文件:/etc/containers/
  • 用户配置文件:~/.config/containers/

ps:会优先使用用户配置文件,若没有则使用全局配置文件。 即:不同用户都可以单独指定自己的配置文件

在/etc/containers 目录下,包括多种配置文件:

  • storage.conf:存储相关配置
  • registries.conf:镜像仓库相关配置
  • policy.json:容器签名验证相关配置
  • auth.json:镜像仓库的认证信息,执行 login 命令后会将 token 存到该文件
  • …

各个文件的具体配置可以参考:Podman&Buildah 配置文件说明8

作为使用者,主要关系 registries.conf 配置,因此重点分析。

vi /etc/containers/registries.conf

完整内容

/etc/containers/registries.conf 完整内容如下:

unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"]  

# 配置为 Docker.io 仓库的镜像源  
[[registry]]  
prefix = "docker.io"  
location = "registry-1.docker.io"  

# 为 Docker.io 配置镜像源  
[[registry.mirror]]  
location = "mirror.gcr.io"  

[[registry.mirror]]  
location = "mirror2.gcr.io"  

# 配置为私有仓库 10.10.10.49:5000 的镜像源  
[[registry]]  
prefix = "10.10.10.49:5000"  
location = "10.10.10.49:5000"  
insecure = true  

# 配置私有仓库镜像源  
[[registry.mirror]]  
location = "mirror.gcr.io"  

short-name-mode = "permissive

大致可以分为以下几部分:

  • 默认镜像仓库
  • 为镜像仓库配置 Insecure、Mirror 等
  • shortName 处理模式

不同仓库配置使用 [[registry]] 块进行区分。

注意:下面这样的配置是 V1 版本,已经废弃了,虽然还可以使用,但是不推荐。

[registries.search]
registries = ['registry1.com', 'registry2.com']

[registries.insecure]
registries = ['registry3.com']

[registries.block]
registries = ['registry.untrusted.com', 'registry.unsafe.com']

参数解释

官方文档:containers-registries.conf.5.md9

unqualified-search-registries

unqualified-search-registries 是一个配置项,用来指定当拉取一个 没有指定完整路径(即不包含域名和路径) 的镜像时,应该尝试哪些仓库(注册表)。这通常适用于 “没有指定镜像仓库” 的情况。

unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"]

一句话描述:在拉取没有指定完整路径(即不包含域名和路径) 的镜像时,应该尝试哪些仓库(注册表)。

short-name-mode

short-name-mode 选项定义了如何处理不带仓库路径的镜像名(例如,golang:1.20)。有三种模式:

  • disabled:不允许使用短名称,必须指定完整的仓库路径。

  • permissive(默认):允许使用短名称,并尝试按顺序从配置的注册表列表中查找镜像。

  • full:只有在仓库名称为完整名称时才能拉取镜像。

默认值就可以了,不用改。

short-name-mode = "permissive

prefix

Registry 块下的 prefix 用于匹配在拉取镜像时会用那个 Registry 块里的配置,只会使用最长匹配的 Registry 块。

假设有下面这样的配置,包含两个 Registry 块

[[registry]]
prefix = "docker.io"

[[registry]]
prefix = "docker.io.example.com"

当我们拉取镜像docker.io.example.com/library/busybox:latest 时,根据镜像完整命令中解析得到一个域名,然后和我们的配置文件中的 prefix 进行匹配,最终会匹配到第二个 Registry 块,这样就会使用该 Registry 块中的配置。

一句话描述:*一般填写 Registry 地址即可,但是需要按照 `.example.com` 格式,或者就是指定 location**。

location

Registry 块中的 location 用于指定最终拉取镜像时访问的地址。

我们在拉取镜像时指定的是 docker.io/library/busybox:1.36,但是最终会去 registry-1.docker.io 这个地址拉取。

对于 docker.io 来说,就需要以下配置文件:

[[registry]]
prefix = "docker.io"
location = "registry-1.docker.io"

还有就是 prefix 不是*.example.com 格式时,也必须指定 location,内容和 prefix 一致就行。

一句话描述:*用于指定真正拉取镜像的地址,例如 registry-1.docker.io,或者当 prefix 不是`.example.com` 格式时,也必须指定 location,内容和 prefix 一致就行。**

insecure

registry 块下的 Insecure 参数比较常见,就是配置使用 http 访问该仓库,一般自建私有仓库会用到该配置。

# 配置为私有仓库 10.10.10.49:5000 的镜像源
[[registry]]
prefix = "10.10.10.49:5000"
location = "10.10.10.49:5000"
insecure = true

blocked

官方解释是这样的: If true, pulling images with matching names is forbidden.

默认是 false,配置为 true 之后就不能冲对应 Prefix 指定的镜像仓库中拉取镜像了。

# 配置为私有仓库 10.10.10.49:5000 的镜像源
[[registry]]
prefix = "10.10.10.49:5000"
blocked = false

一句话描述:用于关闭某些禁止使用的仓库。

mirror

对于部分无法拉取或拉取慢的仓库,可以配置 mirror 仓库。

# 配置 Docker 的镜像源
[[registry]]
prefix = "docker.io"
location = "registry-1.docker.io"

[[registry.mirror]]
location = "docker.m.daocloud.io"

registry.mirror 块放在那个 Registry 块下面就是为哪个仓库配置的 Mirror。

参考配置文件

以下就是一个比较常用的配置文件 Demo,包括了 location、mirror、insecure 等配置,增加其他镜像仓库时可以做参考。

unqualified-search-registries = ["docker.io"]
short-name-mode = "permissive"

# 配置 Docker 的镜像源
[[registry]]
prefix = "docker.io"
location = "registry-1.docker.io"

[[registry.mirror]]
location = "docker.m.daocloud.io"

# 配置为私有仓库 "172.20.150.222" 的镜像源
[[registry]]
prefix = "172.20.150.222"
location = "172.20.150.222"
insecure = true

5. 进阶用法

这里主要分享一些进阶的用法,包括:

  • 多阶段构建
  • 多架构镜像构建
  • CI 环境中使用 Buildah

多阶段构建

多阶段构建是一种优化镜像大小的常用手段,通过将程序编译环境和运行环境分开来降低最终镜像大小。 用一个简单的 Go 程序演示一下多阶段构建。

main.go

使用 net/http 启动一个 http 服务。

// main.go
package main

import (
        "fmt"
        "log"
        "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, World!")
}

func main() {
        http.HandleFunc("/", handler)
        log.Fatal(http.ListenAndServe(":8080", nil))
}

Dockerfile

多阶段构建核心其实是 Dockerfile,可以看到当前 Dockerfile 有两个 FROM 语句,分别对应到编译阶段和运行阶段。

  • 编译阶段:使用 golang:1.20-alpine 作为基础镜像,保证 Go 程序可以正常编译

  • 运行阶段:因为 Go 程序编译后二进制可以直接运行,不在依赖 Go 环境了,因此直接使用 alpine 作为基础镜像,减少最终镜像的体积

# Stage 1: Build stage (builder)
FROM golang:1.20-alpine as builder

# Set the Current Working Directory inside the container
WORKDIR /app

# Copy the source code into the container
COPY . .

# Build the Go binary
RUN CGO_ENABLED=0 go build main.go

# Stage 2: Runtime stage
FROM alpine:latest

# Install the necessary libraries to run the binary (if any)
RUN apk --no-cache add ca-certificates

# Set the Current Working Directory inside the container
WORKDIR /root/

# Copy the compiled binary from the builder stage
COPY --from=builder /app/main .

# Expose port 8080
EXPOSE 8080

# Run the Go application
CMD ["./main"]

构建

buildah build -t server:v0.0.1 .

输出如下:

[root@builder ~]# buildah build -t server:v0.0.1 .
[1/2] STEP 1/4: FROM golang:1.20-alpine AS builder
[1/2] STEP 2/4: WORKDIR /app
[1/2] STEP 3/4: COPY . .
[1/2] STEP 4/4: RUN CGO_ENABLED=0 go build main.go
[2/2] STEP 1/6: FROM alpine:latest
Resolved "alpine" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull docker.io/library/alpine:latest...
Getting image source signatures
Copying blob 38a8310d387e done   |
Copying config 4048db5d36 done   |
Writing manifest to image destination
[2/2] STEP 2/6: RUN apk --no-cache add ca-certificates
fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/APKINDEX.tar.gz
(1/1) Installing ca-certificates (20241010-r0)
Executing busybox-1.37.0-r8.trigger
Executing ca-certificates-20241010-r0.trigger
OK: 7 MiB in 16 packages
[2/2] STEP 3/6: WORKDIR /root/
[2/2] STEP 4/6: COPY --from=builder /app/main .
[2/2] STEP 5/6: EXPOSE 8080
[2/2] STEP 6/6: CMD ["./main"]
[2/2] COMMIT server:v0.0.1
Getting image source signatures
Copying blob 3e01818d79cd skipped: already exists
Copying blob 529cb79624ea done   |
Copying config 8d0a6344f5 done   |
Writing manifest to image destination
--> 8d0a6344f55c
Successfully tagged localhost/server:v0.0.1
8d0a6344f55c0611c94b23f2571adb0ba1ce98ee1d5009c79fd656fd42247c1b

多架构镜像构建

很多应用程序和服务都需要在不同架构的机器上运行,如 amd64 和 arm64,但我们不可能为每一个架构都准备一台专门的机器。

之前主要用的是 Docker Buildx,不过 Buildah 也是支持多架构构建的。

ps:当然了,都要借助 qemu

安装 qemu-user-static

buildah 使用 qemu 来模拟不同架构。

首先需要确保你的系统上安装了 qemu。

ps:经过测试,如果你的 Dockerfile 中没有 RUN 命令去执行某些操作其实不需要 qemu 也能正常构建多架构镜像。

直接包管理工具安装:

# Ubuntu
sudo apt-get install qemu-user-static
# Fedora
sudo dnf install qemu-user-static

构建并推送多架构镜像

和 Docker buildx 一样,Buildah 也通过 --platform 参数来指定要构建的架构。

不过 Buildah 没有 --push 参数,不能在构建完成后自动生成 manifest 并推送,因此需要手动创建一个 manifest 并将构建的镜像和 manifest 绑定并手段推送到最终镜像仓库。

整体流程大致分为三步:

  • 1)创建 Manifest
  • 这里创建的 manifest 其实是一个镜像,会出现在 buildah images 列表里
  • 名称推荐使用完整镜像名,例如:172.20.150.222/lixd/nginx-hello:v0.0.2,不过用别的也不影响
  • 2)构建多架构镜像
  • 注意要使用 –manifest 代替 –tag 参数,让镜像和 manifest 绑定
  • 3)推送 Manifest 和 Image 到镜像仓库
  • Push 时需要指定 Manifest 名称,同时还要指定完整的 Registry 路径
  • 如果 manifest 用的就是完整镜像名,这里二者就是一样的

Command 如下:

PUSH_WAY=172.20.150.222/lixd/nginx-hello:v0.0.2

# 创建 manifest
buildah manifest create ${PUSH_WAY}

# 构建
buildah build --manifest ${PUSH_WAY} --platform linux/amd64,linux/arm64 .

# 推送
buildah manifest push ${PUSH_WAY} --all "docker://${PUSH_WAY}"

定义了一个简单的脚本来实现构建多架构镜像,build.sh 完整内容如下:

# Set the required variables
export REGISTRY="172.20.150.222"
export REPOSITORY="lixd"
export IMAGE_NAME="server"
export IMAGE_TAG="v0.0.1"
export BUILD_PATH="."

# Platforms to build for
export PLATFORMS="linux/amd64,linux/arm64"

PUSH_WAY="${REGISTRY}/${REPOSITORY}/${IMAGE_NAME}:${IMAGE_TAG}"
MANIFEST_NAME=$PUSH_WAY
echo $PUSH_WAY

# Create a multi-architecture manifest
### Infact,this command can be ignore,when build will creates manifest list if it does not exist
buildah manifest create ${MANIFEST_NAME}

# Build the container for all platform
### Note: When more than one platform,use manifest to instead of tag flag.
buildah build \
--manifest ${MANIFEST_NAME} \
--platform ${PLATFORMS} \
${BUILD_PATH}

# Push the full manifest, with both CPU Architectures
### If Push To Docker Hub or Gitlab Registry,need add flag:--format v2s2,Default Is oci
buildah manifest push --all \
  ${MANIFEST_NAME} \
  "docker://${PUSH_WAY}"

就以上一步的 Go Demo 编译生成一个多架构镜像:

bash build.sh

输出如下:

root@builder-ubuntu:~/multistage# bash build.sh
172.20.150.222/lixd/server:v0.0.1
e6ba6ec459a1fd7303c19242ab0d85c7c23af8cb156ce348928e2a4135327f15
# amd64
[linux/amd64] STEP 1/4: FROM golang:1.20-alpine AS builder
[linux/amd64] STEP 2/4: WORKDIR /app
[linux/amd64] STEP 3/4: COPY . .
[linux/amd64] STEP 4/4: RUN CGO_ENABLED=0 go build main.go
[linux/amd64] STEP 1/6: FROM alpine:latest
[linux/amd64] STEP 2/6: RUN apk --no-cache add ca-certificates
[linux/amd64] STEP 3/6: WORKDIR /root/
[linux/amd64] STEP 4/6: COPY --from=builder /app/main .
[linux/amd64] STEP 5/6: EXPOSE 8080
[linux/amd64] STEP 6/6: CMD ["./main"]
# arm64
[linux/arm64] [1/2] STEP 1/4: FROM golang:1.20-alpine AS builder
[linux/arm64] [1/2] STEP 2/4: WORKDIR /app
[linux/arm64] [1/2] STEP 3/4: COPY . .
[linux/arm64] [1/2] STEP 4/4: RUN CGO_ENABLED=0 go build main.go
[linux/amd64] [2/2] STEP 1/6: FROM alpine:latest
[linux/arm64] [2/2] STEP 3/6: WORKDIR /root/
[linux/arm64] [2/2] STEP 4/6: COPY --from=builder /app/main .
[linux/arm64] [2/2] STEP 5/6: EXPOSE 8080
[linux/arm64] [2/2] STEP 6/6: CMD ["./main"]
[linux/arm64] [2/2] COMMIT
# push
Getting image source signatures
Copying blob 977340364f39 skipped: already exists
Copying blob d8b4b7adc1e8 done
Copying config d97c60d03e done
Writing manifest to image destination
Storing signatures
--> d97c60d03e8
d97c60d03e822bb29c02c6b5c2c51b0f47871e52bc8c210c1e6324863797ce64
Getting image list signatures
Copying 4 of 4 images in list
Writing manifest list to image destination
...

CI 系统中使用

这里以 Github Action 为例,演示如何使用 Buildah 构建多架构镜像。

源码:lixd/github-action-lab[11]

Dockerfile 和 main.go 和之前一样,就不贴了,感兴趣的同学可以调整 Github 查看~

Workflow.yaml

Workflow 就是最终执行的 Pipeline,分为几个步骤:

  • 1)启动运行环境,这里是 ubuntu-20.04
  • 2)Clone 代码
  • 3)安装 QEMU
  • 4)Buildah 构建多架构镜像
  • 5)推送到镜像仓库
name: Build and Push Multi-Arch Image

on:
  push:

env:
  IMAGE_NAME: test-multi-arch
  IMAGE_TAG: latest
  IMAGE_REGISTRY: docker.io
  IMAGE_NAMESPACE: lixd96

jobs:
  build:
    name: Build and Push Multi-Architecture Image
    runs-on: ubuntu-20.04

    steps:
      # Checkout the repository
      - name: Checkout repository
        uses: actions/checkout@v2

      # Set up QEMU for cross-platform builds
      - name: Set up QEMU for multi-arch support
        uses: docker/setup-qemu-action@v1

      # Build the Docker image using Buildah
      - name: Build multi-architecture image
        id: build-image
        uses: redhat-actions/buildah-build@v2
        with:
          image: ${{ env.IMAGE_NAME }}
          tags: ${{ env.IMAGE_TAG }}
          archs: amd64,ppc64le,s390x,arm64  # Specify the architectures for multi-arch support
          dockerfiles: |
            ./Dockerfile

      # Push the built image to the specified container registry
      - name: Push image to registry
        id: push-to-registry
        uses: redhat-actions/push-to-registry@v2
        with:
          image: ${{ steps.build-image.outputs.image }}
          tags: ${{ steps.build-image.outputs.tags }}
          registry: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAMESPACE }}
          username: ${{ secrets.REGISTRY_USERNAME }}  # Secure registry username
          password: ${{ secrets.REGISTRY_PASSWORD }}  # Secure registry password

      # Print the image URL after the image has been pushed
      - name: Print pushed image URL
        run: echo "Image pushed to ${{ steps.push-to-registry.outputs.registry-paths }}"

验证

提交代码后,Workflow 会自动运行,到 Dockerhub 查看镜像是否成功推送

可以看到,指定的 4 个架构都成功构建并推送过来了。

6.小结

Buildah 提供了一种灵活且高效的镜像构建方式,无需 Docker 依赖,且支持 rootless 安全模式,适用于各种 DevOps 和 CI/CD 环境。它支持命令式和 Dockerfile 构建方式,还能进行多阶段构建和多架构镜像构建。

References

参考资料

2025年Gartner十大战略性技术趋势

Gartner研究副总裁高挺(Arnold Gao)表示:“今年的重要战略技术趋势涵盖了AI的必要事项和风险,以及计算技术和人机协同等前沿趋势。追踪这些趋势将帮助IT领导者以负责任、和合乎道德的创新方式塑造企业机构的未来。”

以下是 2024 年 10 月 22 日 Gartner 发布的 2025 年重要战略技术趋势:

  • 决策代理型人工智能(Agentic AI)
  • 人工智能治理技术平台(AI Governance Platforms)
  • 虚假信息安全(Disinformation Security)
  • 后量子密码学(Postquantum Cryptography)
  • 环境隐形智能(Ambient Invisible Intelligence)
  • 节能计算(Energy-Efficient Computing)
  • 混合计算(Hybrid Computing)
  • 空间计算(Spatial Computing)
  • 多功能机器人(Polyfunctional Robots)
  • 神经增强(Neurological Enhancement)

2025年重要战略技术趋势

决策代理型人工智能(Agentic AI)

代理型AI通过自主规划和采取行动实现用户定义的目标。代理型AI为实现能够分担和补充人类工作的虚拟劳动力带来了希望。Gartner 预测,到2028年,至少15%的日常工作决策将由代理型AI自主做出,而2024年这一比例为0%。这项技术的目标导向型功能将实现适应性更强、能够完成各种任务的软件系统。

代理型AI有望实现企业首席信息官(CIO)提高生产力的愿望。这一动机促使企业与厂商探索、开创和建立能够提供稳健、安全和可信的代理型AI所需的技术和实践。

行业应用:

  • 个人助理:如财务规划AI,可根据用户收入与支出模式,直接执行最佳投资策略。
  • 企业管理:在供应链管理中,Agentic AI能够动态调整库存和物流策略,以应对市场变化。

人工智能治理技术平台(AI Governance Platforms)

随着AI的广泛应用,模型偏见、不透明性等问题对信任构成威胁。AI治理平台将通过模型透明度、道德审查和可解释性提升信任度,防止生成有害或不道德的内容输出。

技术落地:

  • 模型可解释性:确保AI决策过程清晰可追溯。
  • 偏见检测工具:识别并纠正模型中的隐性偏见。
  • 行业规范化:推动AI治理标准化,加强对敏感领域AI应用的监管。

Gartner预测,到2028年,采用综合AI治理平台的企业将比没有这类系统的企业减少40%与AI相关的伦理事件。

虚假信息安全(Disinformation Security)

虚假信息安全是一个新兴技术类别。该技术能够系统地辨别信任度,旨在提供一个能够确保信息完整性、评估真实性、防止冒名顶替和追踪有害信息传播的方法体系。Gartner预测,到2028年,将有50%的企业开始采用专为应对虚假信息安全用例而设计的产品、服务或功能,而目前这一比例还不到 5%。

AI和机器学习工具的广泛可用性和高级状态被用于恶意目的,预计将增加针对企业的虚假信息事件数量。如果这种趋势不被加以控制,那么虚假信息可能会对企业造成重大且持久的损害。

应用场景:

  • 媒体审查:新闻机构可利用该技术验证内容真实性。
  • 企业声誉管理:实时监控并应对恶意虚假信息攻击。
  • 司法取证:为法庭提供对合成媒体的技术验证支持。

后量子密码学(Postquantum Cryptography)

后量子密码学能够保护数据免受量子计算解密风险。根据量子计算过去几年的发展情况,目前广泛使用的几种传统加密技术将被淘汰。由于改变加密方法并非易事,企业必须有更长的准备时间,才能为一切敏感或机密信息提供强有力的保护。

行业影响:

  • 金融行业:确保银行与交易系统的数据安全。
  • 通信安全:加密敏感通信内容,避免数据泄露。
  • 政府机构:保护国家机密,抵御量子计算威胁。

Gartner预测,到2029年,量子计算技术的进步将使大多数传统的非对称加密技术变得不安全。

环境隐形智能(Ambient Invisible Intelligence)

环境隐形智能是由成本极低、体积小巧的智能标签和传感器实现的,这些传感器能够提供大规模、经济实惠的的追踪和传感。长远来看,环境隐形智能将使传感器和智能技术无缝融入我们的日常生活中。

典型应用:

  • 供应链优化:实时监测货物位置、温度和湿度。
  • 资产管理:跟踪企业固定资产的状态和位置。
  • 工业物联网:提高工厂运营透明度,优化生产效率。

到2027年,环境隐形智能的早期示例将以解决当前问题为主,例如零售库存检查或易腐货物物流等,通过实现低成本的实时物品追踪和感知来提高可见性和效率。

节能计算(Energy-Efficient Computing)

IT以多种方式影响可持续性。在2024年,碳足迹是大多数IT组织的首要考虑因素。计算密集型应用,例如AI训练、模拟、优化和媒体渲染等由于能耗最高而可能成为企业碳足迹“大户”。

发展方向:

  • 绿色数据中心:通过优化冷却系统和能源管理降低碳排放。
  • 算法重构:针对能源密集型应用优化代码效率。
  • 光学和神经形态计算:探索更高效的计算架构。

预计从2020年代末开始将出现一些新的计算技术,如光学、神经形态和新型加速器等。这些新技术将被专门用于特殊任务,例如AI和优化,并显著降低能耗。

混合计算(Hybrid Computing)

新的计算范式正在不断涌现,包括中央处理单元、图形处理单元、边缘、特定应用集成电路、神经形态以及经典量子计算、光学计算范式。混合计算结合不同的计算、存储和网络机制解决计算问题。这种计算形式能够帮助企业探索和解决问题,使AI等技术能够突破当前的技术限制。混合计算将被用来创建比传统环境更高效的变革性创新环境。

未来计算体系将整合CPU、GPU、边缘计算、量子计算、光学计算等多种技术,实现协同计算。组织需要评估并部署最适合其需求的计算框架。

应用趋势:

  • 精准医疗:通过量子计算模拟药物反应。
  • 智能制造:边缘计算实时分析生产数据,提高生产灵活性。
  • 超大规模AI模型训练:GPU与量子计算联合加速训练过程。

空间计算与增强现实(Spatial Computing)

空间计算利用增强现实和虚拟现实等技术,以数字方式增强物理世界。它将实体和虚拟体验之间的交互提升到一个新的级别。在未来五到七年内,空间计算的使用将通过简化工作流程和增强协作能力来提高企业效率。

前景展望:

  • 智能工厂:工人通过AR眼镜实时获取设备维护信息。
  • 远程医疗:医生通过空间计算与患者共享三维诊断模型。
  • 沉浸式教育:为学生提供交互式虚拟实验室体验。

Gartner 预测,到2033年,空间计算市场将从2023年的1100亿美元增长至1.7万亿美元。

多功能机器人(Polyfunctional Robots)

多功能机器人能够执行多项任务,它们正在取代为重复执行一种任务而专门设计的特定任务机器人。这种新型机器人的功能性能够提高效率和投资回报率(ROI)。多功能机器人可以与人类一起协作,能够快速部署和轻松扩展。

技术进展:

  • 服务业:为家庭提供清洁、监控等多任务服务。
  • 农业:一台机器人可完成种植、喷洒与收获。
  • 灾难救援:集成多种功能,用于搜索与救援任务。

Gartner预测,到2030年,80%的人类将每天与智能机器人打交道,而目前这一比例还不到10%。

神经增强(Neurological Enhancement)

神经增强利用读取和解码大脑活动的技术提高人类的认知能力。这项技术能够使用单向脑机接口或双向脑机接口(BBMI)读取人的大脑,在人类技能提升、下一代营销和提升表现这三个主要领域具有巨大潜力。神经增强将提高人类的认知能力,帮助品牌了解消费者的想法和感受并增强人类的神经功能,从而获得最佳的结果。

Gartner预测,到2030年, 30%的知识工作者将通过BBMI等技术(资金来源包括雇主和个人)提升自己的能力,并凭借这些技术来适应工作场所中AI的崛起。这一比例在2024年还不到 1%。

潜在价值:

  • 康复医学:帮助中风患者恢复运动能力。
  • 学习增强:提高人类对复杂信息的理解与记忆能力。
  • 交互创新:通过脑机接口实现直接的人机互动。

今年的重要战略技术趋势强调了那些将在未来10年内给CIO和其他IT领导人带来重大变革与机遇的趋势。

References

2024年Gartner十大战略性技术趋势

这些战略性技术趋势将在未来三年深刻影响企业的商业和技术决策

Gartner建议企业评估每个技术趋势的影响和收益,明确哪些创新技术或组合将对企业的成功产生最显著影响。

十大技术

1. AI信任、风险和安全管理(AI TRiSM)(AI Trust, Risk and Security Management)

AI Trism 指“AI Trust,Risk,Security Management”,是一组关于AI信任、风险、安全管理的架构性趋势,比较简单的说法是“AI治理”。

越来越多的人工智能成为工作中不可或缺的一部分,尤其是在生成式人工智能爆火的今天。一旦我们缺乏对人工智能模型有效的治理,实际上就存在人工智能技术“失控”的风险。对于企业来说,人工智能在整个生命周期中可能都会有一些安全风险,从最早的“训练数据投毒”,到应用生成式人工智能时的“提示词攻击”,从各个方面来讲,人工智能有很多风险敞口。

基于这样的现实情况,Gartner提出这套“AI Trust”框架。它关注的是人工智能模型的治理,以及公平性、可解释性、透明度、数据保护等,由6个模块组成,分别是:模型运维(ModelOps)、主动数据保护、AI特定安全、模型监控(包括对数据漂移、模型漂移和/或意外结果的监控)以及第三方模型和应用输入与输出风险控制工具。这是AI Trism连续第二年入选“十大趋势”。

2. 持续威胁暴露管理(CTEM) (Continuous Threat Exposure Management)

CTEM指“Continuous Threat Exposure Management”,是Gartner提出的安全态势修复和改进的框架,其与传统安全技术的区别在于:

不是指单纯从技术上去修复一个安全漏洞,而更加关注业务层面的风险暴露面,包含五个模块:Scoping(范围界定)、Discovery(发现)、prioritization(优先级排序)、Validation(验证)、Mobilizatlon(动员)。

3. 可持续技术(Sustainable Technology)

可持续技术是一个数字解决方案框架,其用途是实现能够支持长期生态平衡与人权的环境、社会和治理(ESG)成果。人工智能、加密货币、物联网、云计算等技术的使用正在引发人们对相关能源消耗与环境影响的关注。因此,提高使用IT时的效率、循环性与可持续性变得更加重要。

Gartner预测,到2025年,75%的组织都会面临持续的电力短缺,这种电力短缺会加速推动可持续IT技术的发展。到2027年,25%的CIO(首席信息官)的个人薪酬将与他们对可持续技术的影响挂钩。

4. 平台工程(Platform Engineering)

平台工程指的是通过一系列工具和流程,为企业的软件开发团队提供一个自助开发门户,或者称之为内部开发平台。这个平台可以涵盖应用程序整个生命周期里所有的操作,但它需要由一个专门的平台工程团队去创建和维护。

这跟传统的开发有什么区别呢?传统开发都是项目制,很多开发人员是根据业务部门的需求做定制化开发。这导致了一个问题,比如一个企业开发了3个应用,3个应用里有很多功能是类似的,那么就会有重复开发的资源浪费问题。

平台工程更像是开一家自助餐厅,顾客可以根据自己的要求去挑选合适的菜品,就是所谓的“自助式服务”。这样可以在短时间内满足需求、提升开发效率,同时可以比较大限度地规避菜品重复的浪费问题。餐厅里的厨师就变成了“平台工程师”,这也是为什么平台工程要有一个专门的团队去维护。

平台工程有3个关键词:可组装、可复用、可配置。本质上它背后的思想就是把软件开发从项目管理的思维转化到产品管理的思维,把本来相对独立的开发项目流程模块化和集中化。

5. AI辅助开发(AI-Augmented Development)

AI增强开发指使用生成式人工智能、机器学习等AI技术协助软件工程师进行应用设计、编码和测试。主要包括:AI代码生成、AI增强测试、从设计到代码的过程。

在第一个模块里进行“AI代码生成”,对于下面几种场景特别有帮助:样板代码、重构代码,以及对旧的框架或编程语言进行学习。

“AI增强测试”即会有很多测试任务逐渐被AI开发替代,主要集中在3个方面:编写测试代码、生成测试数据、生成单元测试中的“测试桩”。

从设计到代码,在某种意义上是人工智能参与整个开发全生命周期的过程。目前还没有完全实现,属于对未来的展望。

6. 行业云平台(Industry Cloud Platforms)

Gartner预测,到2027年,将有超过70%的企业使用行业云平台(ICP)加速其业务计划,而2023年的这一比例还不到15%。ICP通过可组合功能将底层IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)服务整合成全套产品,推动与行业相关的业务成果。这些功能通常包括行业数据编织、打包业务功能库、组合工具和其他平台创新功能。

换句话讲,即在传统的“云”上加一层“业务模块层”。它之所以会成为趋势,因为现在企业更关注在“云”投资可以如何产生可量化的商业价值,而不是像以前只是为了达到技术和基础设施改进的目的。“行业云平台”有两大特征:可组装、模块化。

它实际上是把一些通用的业务能力模块化之后放在“公有云”上,然后让它重新排列组合进行组装。根据现在的整理,我们在超过20个行业当中找到了大概有超过270个“行业云平台”,以下是大致的分布。

7. 智能应用(Intelligent Applications)

Gartner将智能应用中的“智能”定义为自主做出适当响应的习得性适应能力。在许多用例中,这种智能被用于更好地增强工作或提高工作的自动化程度。作为一种基础能力,应用中的智能包含各种基于人工智能的服务,如机器学习、向量存储和连接数据等。

在2023年Gartner首席执行官(CEO)和业务高管调查中,26%的CEO认为对企业机构破坏力最大的风险是人才短缺。吸引和留住人才是CEO在人力资源方面的首要任务,而人工智能被认为是未来3年对他们所在行业影响最大的技术。

其目标是最终成为可以像人类一样去思考、判断和适应环境的应用。这种智能应用自适应的学习能力,背后实际上是包含各种基于人工智能的服务,如机器学习、语意引擎、连接数据等。比如苹果手机或苹果手表有一个“优化充电”的功能,即根据用户每天的充电习惯,通过机器学习的方式找到规律,比如起床时间、出门时间,然后在你出门之前一个小时左右才充电到100%。

这就是通过“学习适应的模式”去改变,让手机寿命更长一点。像辅助驾驶/自动驾驶,包括一些做机器人的公司,如特斯拉的AI机器人,本质上也是一种智能应用。

一个有意思的例子是“AI读心术”。在2023年5月,美国得克萨斯州的奥斯汀分校研究团队在《自然·神经科学》杂志上发表文章,公布了一个基于AI预训练大模型的大脑活动解码器,它可以将大脑活动转化为连续的文本流,通过一种非侵入式的方法学会“读心术”。实际上目前的识别率虽然不算特别高,但还是很有意思。

8. 普惠型生成式AI(Democratized Generative AI)

生成式人工智能应用可以让企业用户访问并使用大量内部和外部信息源,这意味着生成式人工智能的快速采用将极大地促进企业知识和技能的全民化。

Gartner预测:到 2026年超过80%的企业将使用生成式人工智能的API(应用程序编程接口)或模型,或在生产环境中部署支持生成式人工智能的应用,而在2023年初这一比例不到5%。

未来生成式人工智能平台的入门门槛会变得非常低,几乎可以为所有人提供“生成、创造、编写数字内容”的能力。入门门槛低,意味着成本也低。这个“低成本”实际上还能够提高生产力,取代或辅助一些工作,用来研发一些新的产品。

举个例子,二手车零售商CarMax用微软Azure OpenAI的服务,把万余条“客户评论”汇总成一个简短的描述,包括它库存里每种汽车的品牌、型号、年份,以及一些关键评论的要点。

对于商业用户来说,如果我们将来可以无处不在地获取以前不可能获得的知识和技术,那么这预示着一波新的生产力浪潮即将到来。“云”和“开源”的融合会使生成式人工智能更加民主化,会超越只是某些大型科技巨头能够掌握这件事的局限性。但它也有一个问题,即这种不受限制地获取知识和技能的方式,必须以治理和风险管理作为基础。

9. 增强型互联员工(Augmented Connected Workforce)

增强型互联员工队伍(ACWF)是一种优化员工价值的战略。ACWF使用智能应用和分析,提供助力员工队伍体验、福祉和自身技能发展的日常环境与指导。

其关键的核心在于提供员工的数字体验。如何用人工智能“增强”?它指的是,对从终端应用知识库甚至是员工情绪中提取出的数据进行接近实时的处理和反馈。比如,企业从员工在线工作的时间,包括邮件里的措词、访问各个应用的数据,分析出员工目前的工作状态和压力。另外一个角度是,从员工在某些系统里逗留的时间、所做的操作,可以看到企业里需要改善的流程,甚至找到一些“员工的离职倾向”等。这里要考虑“安全和隐私”问题。但它的一个要点是用人工智能的方式对员工进行关怀,人工智能最后不会取代人类的关怀,但是可以增强,至少给人类提供一些数据方面的支撑。

10. 机器客户(Machine Customers)

机器客户(也被称为“客户机器人”)是一种可以自主协商并购买商品和服务以换取报酬的非人类经济行为体。到2028年,将有150亿台联网产品具备成为机器客户的潜力,这一数字还将在之后的几年增加数十亿。到2030年,该增长趋势将带来数万亿美元的收入,其重要性最终将超过数字商务的出现。

在战略上应考虑为这些算法和设备提供便利甚至创造新型客户机器人的机会等。Gartner预测:到2027年,超过50%的销售和服务中心将接听机器客户的电话。

这个“机器客户”当然不是一蹴而就的,它的整个进化过程分成3个阶段:

第一,人类主导,由机器通过一定的规则去购买特定的商品。

第二,人类和机器共同主导,优化购买的选择,最终由机器根据规则执行购买操作。第一个阶段已经实现了,第二个阶段也已经实现了一部分了。

第三,机器推测人类的需求,根据规则、场景和偏好进行自主化购买。

一个有意思的案例是,前不久OpenAI的一位创始人发表TED演讲,演讲之前他做了一件事:用聊天机器人ChatGPT和文生图工具Dall·E帮他准备晚餐的菜单,然后用Dall·E把晚餐的菜单文字转化为图片的请柬,最后用ChatGPT创建一个“购物清单”。

三大主题

每个趋势都与以下一个或多个关键主题相关:

  • 保护和维护过去及未来的投资
  • 为合适的相关方在适当时机提供合适的解决方案
  • 为内外部客户创造与时俱进的价值

主题一: 投资保护

主题二: 构建者生态崛起

主题三: 价值实现

  • 通过以下方式提升利益相关方体验,拓展收入增长渠道:

    • 持续适应内外部客户需求变化,形成价值创造和交付的良性循环
    • 重视算法驱动的机器客户群体,其影响力正快速增长
    • 有序开放快速迭代的数字工具,包括生成式AI、人才培养、技能提升等增强和自动化领域
  • 该主题相关的IT趋势包括:

给同行的3点建议

  1. Gartner年度战略性技术趋势研究有助于你确定投资优先级,特别是在AI时代。
  2. 2024年的趋势带来一个或多个关键收益:保护你的投资、优化智能应用/解决方案构建者的崛起以及实现更大的价值。
  3. 规划合适的技术组合以实现未来几年CEO和CIO的目标。

References

在Word文档中添加打勾的小方框

用户在做电子调查报告或者填写一些资料表,会遇到一些word文档中有小方框【□】,需要在里面打钩【√】

方法

方法一:将光标定位于需要打钩的地方,选择【插入】→【符号】→【其他符号】,在弹出的符号栏里,字体选择【Windings2】,然后便可以找到现成的打钩样式,点击插入,再关闭即可。

方法二:把光标定位于需要打钩的地方,输入大写字母R。选中字母R,鼠标右键,在菜单栏中选择”字体”, 在西文字体栏目中,将字体改为【Windings2】,点击下方确定按钮。(提示:如果要打叉,把R改成T即可)

方法三:将光标定位于要打钩的地方,输入2611。选中2611,同时按住键盘的Alt+X键。(提示:如果需要打叉,只要把2611改成2612即可)

个人比较喜欢方法三。

References

推送 helm 到 harbor

大致流程如下:

helm repo add harbor https://myharbor.mydomain.com/chartrepo/myproject --username myusername --password mypassword

helm plugin install https://github.com/chartmuseum/helm-push

helm repo add chartmuseum http://localhost:8080

helm cm-push mychart/ chartmuseum

References

自托管 AIGC UI APP 汇总

该清单搜集人类创造的最先进最好用的开源 AIGC APP 方案,包括但不限于对话、识图、生图、TTS、知识库、多模态、工作流编排,主要搜集支持自托管,可容器化部署的方案。

欢迎补充。

AI APP 汇总

  • LobeChat: 完善的插件、拓展生态,数据云存储,多用户管理;
  • ChatGPT-Next-Web: 聚焦在 AI Chat 助手,完善的对话支持;
  • FastGPT: 定位为基于 LLM 大语言模型的知识库问答系统、工作流编排系统;
  • n8n: 开源的自动化工作流编排平台,原生提供 AI 能力,可定制复杂 AI 工作流;
  • ChatGPT Web Midjourney Proxy: 全面的 Midjourney 支持;
  • Open WebUI:全功能 AI UI,具有可扩展性强、功能完备、操作便捷等特点
  • Dify: 一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等。

目前探索较好的工作流,LobeChat 日常AI对话,数据云同步;ChatGPT Web Midjourney Proxy 用来文生图;n8n 构建复杂工作流。

支持知识库的有 FastGPT 和 Dify,看论坛评价 FastGPT 的知识库强,Dify 的工具链强。 — 来源

AI APP 详情

LobeChat

LobeChat

  • Github: https://github.com/lobehub/lobe-chat
  • Star: 49.2K (2024-12-20)
  • 官网: https://lobehub.com/zh
  • 在线体验: https://chat-preview.lobehub.com/
  • 简介:🤯 Lobe Chat – 一个开源、现代设计的人工智能聊天框架。支持多AI提供商(OpenAI / Claude 3 / Gemini / Ollama / Qwen / DeepSeek),知识库(文件上传/知识管理/ RAG),多模态(视觉/TTS/插件/工件)。一键免费部署您的私人 ChatGPT/Claude 应用程序。
  • 数据存储:本地浏览器/云端
  • AI 特性:
    • AI Chat
    • 视觉识别
    • TTS & STT
    • 文生图
  • 技术特性:
  • 体验特性
    • PWA
    • 移动设备友好
    • 自定义主题

ChatGPT-Next-Web

ChatGPT-Next-Web

  • Github: https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web
  • Star: 77.8K (2024-12-20)
  • 官网: https://app.nextchat.dev/
  • 简介:一键拥有你自己的跨平台 ChatGPT/Gemini 应用。
  • 数据存储:本地浏览器
  • 主要功能:
    • 在 1 分钟内使用 Vercel 免费一键部署
    • 提供体积极小(~5MB)的跨平台客户端(Linux/Windows/MacOS), 下载地址
    • 完整的 Markdown 支持:LaTex 公式、Mermaid 流程图、代码高亮等等
    • 精心设计的 UI,响应式设计,支持深色模式,支持 PWA
    • 极快的首屏加载速度(~100kb),支持流式响应
    • 隐私安全,所有数据保存在用户浏览器本地
    • 预制角色功能(面具),方便地创建、分享和调试你的个性化对话
    • 海量的内置 prompt 列表,来自中文和英文
    • 自动压缩上下文聊天记录,在节省 Token 的同时支持超长对话
    • 多国语言支持:English, 简体中文, 繁体中文, 日本語, Español, Italiano, Türkçe, Deutsch, Tiếng Việt, Русский, Čeština, 한국어, Indonesia
    • 拥有自己的域名?好上加好,绑定后即可在任何地方无障碍快速访问
  • 其他特性:
    • 预制角色
    • Artifacts
    • 插件机制
    • Realtime Chat

FastGPT

FastGPT Logo

FastGPT 工作流

  • Github: https://github.com/labring/FastGPT
  • Star: 19.1K (2024-12-20)
  • 官网: https://tryfastgpt.ai/
  • 在线体验: https://cloud.tryfastgpt.ai/
  • 简介:FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!
  • 关键特性:
    • 应用编排能力
      • 对话工作流、插件工作流
      • 工具调用
      • Code sandbox
      • 循环调用
      • 用户选择
      • 表单输入
    • 知识库能力
      • 多库复用,混用
      • chunk 记录修改和删除
      • 支持手动输入,直接分段,QA 拆分导入
      • 支持 txt,md,html,pdf,docx,pptx,csv,xlsx (有需要更多可 PR file loader)
      • 支持 url 读取、CSV 批量导入
      • 混合检索 & 重排
    • 应用调试能力
      • 知识库单点搜索测试
      • 对话时反馈引用并可修改与删除
      • 完整上下文呈现
      • 完整模块中间值呈现
      • 高级编排 DeBug 模式
    • OpenAPI 接口
      • completions 接口 (chat 模式对齐 GPT 接口)
      • 知识库 CRUD
      • 对话 CRUD
    • 运营能力
      • 免登录分享窗口
      • Iframe 一键嵌入
      • 聊天窗口嵌入支持自定义 Icon,默认打开,拖拽等功能
      • 统一查阅对话记录,并对数据进行标注
    • 其他
      • 支持语音输入和输出 (可配置语音输入语音回答)
      • 模糊输入提示
      • 模板市场

n8n

n8n banner

n8n snapshot

  • Github: https://github.com/n8n-io/n8n
  • Star: 51.8K (2024-12-20)
  • 官网: https://n8n.io/
  • 简介:开源的工作流自动化平台,具有原生 AI 能力。结合可视化构建和自定义代码,支持自托管或云服务,超过 400 个集成。
  • 关键特性:
    • 随时编写代码:支持 JavaScript/Python,添加 npm 包,或使用可视化界面
    • 原生 AI 平台:基于 LangChain 利用自有数据和模型构建 AI 代理工作流
    • 完全掌控:使用公平代码许可证进行自托管或使用云服务
    • 企业级就绪:高级权限、单点登录和离线部署
    • 活跃社区:400多个集成和900多个即用型模板

ChatGPT Web Midjourney Proxy

结合 uniapi 等服务,还挺好用。 References: https://t.me/FindBlog/553

界面截图

  • Github: https://github.com/Dooy/chatgpt-web-midjourney-proxy
  • Star: 5.6K (2024-12-20)
  • 在线体验: https://vercel.ddaiai.com/
  • 简介:一个全部由chatgpt web、midjourney、gpts、suno、luma、runway、viggle、flux、ideogram、realtime、pika、udio 完成的 UI ;同时支持Web/PWA/Linux/Win/MacOS平台
  • 关键特性:
    • 支持 udio 文生音乐
    • 支持 pika 文生视频,图生视频
    • 支持 openai realtime 点击观看.youtube B站
    • 支持 kling 可灵 文生视频,图生视频, 绘图
    • 支持 ideogram 绘图
    • 支持 runway 文生视频,图生视频
    • 支持 luma 文生视频,图生视频
    • 支持 viggle 舞蹈
    • 支持 suno 单独模块,可歌词调整 曲风调整
    • 支持 suno 以音频生成音频
    • 支持 flux dall.e 文生图
    • 支持 chatgpt web 所有功能,拓展功能
    • midjourney 文生图、垫图+文生图 、图变 U1到U4 、 V1到V4、重绘、局部重绘、支持1.5倍变焦 2倍变焦、2倍高清 4倍高清、支持左、右、上、下延伸变化、同时支持midjourney-proxy 接口 和 midjourney-proxy-plus 接口、图生文
    • 使用localforage实现本地存储
    • 支持midjourney、niji 不同机器人
    • 支持InsightFace 人脸替换
    • 即时语音识别(浏览器自带语音识别 ASR) v2.15.7以上版本

Open WebUI

页面录屏

  • Github: https://github.com/open-webui/open-webui
  • Star: 52.1K (2024-12-20)
  • 官网: https://openwebui.com
  • 简介:Open WebUI 是一款完全离线运行的自托管网页平台,具有可扩展性强、功能完备、操作便捷等特点。该平台可对接 Ollama 以及符合 OpenAI 标准的多种大模型接口。
  • 关键特性:
    • 🚀 轻松设置:使用 Docker 或 Kubernetes (kubectl, kustomize 或 helm)无缝安装,支持 :ollama 和 :cuda 标签镜像,带来无忧体验。
    • 🤝 Ollama/OpenAI API 集成:轻松集成 OpenAI 兼容 API,实现与 Ollama 模型的多功能对话。可自定义 OpenAI API URL 以连接 LMStudio、GroqCloud、Mistral、OpenRouter 等。
    • 🛡️ 精细权限和用户组:管理员可创建详细的用户角色和权限,确保安全的用户环境。这种精细度不仅增强了安全性,还允许定制用户体验,培养用户的主人翁意识和责任感。
    • 📱 响应式设计:在台式电脑、笔记本和移动设备上享受流畅体验。
    • 📱 移动端渐进式 Web 应用(PWA):通过 PWA 在移动设备上享受类原生应用体验,提供本地主机离线访问和流畅用户界面。
    • ✒️🔢 完整 Markdown 和 LaTeX 支持:通过全面的 Markdown 和 LaTeX 功能提升 LLM 体验,实现丰富交互。
    • 🎤📹 免提语音/视频通话:体验集成的免提语音和视频通话功能,实现更动态和互动的聊天环境。
    • 🛠️ 模型构建器:通过 Web UI 轻松创建 Ollama 模型。通过Open WebUI Community集成,轻松创建和添加自定义角色/代理,自定义聊天元素,导入模型。
    • 🐍 原生 Python 函数调用工具:在工具工作区通过内置代码编辑器支持增强 LLM。只需添加纯 Python 函数即可实现自带函数(BYOF),实现与 LLM 的无缝集成。
    • 📚 本地 RAG 集成:通过突破性的检索增强生成(RAG)支持,体验聊天交互的未来。该功能将文档交互无缝集成到聊天体验中。您可以直接将文档加载到聊天中或添加到文档库,使用查询前的 # 命令轻松访问它们。
    • 🔍 RAG 网络搜索:使用 SearXNG、Google PSE、Brave Search、serpstack、serper、Serply、DuckDuckGo、TavilySearch、SearchApi 和 Bing 等提供商进行网络搜索,并将结果直接注入聊天体验。
    • 🌐 网页浏览功能:使用 URL 前的 # 命令将网站无缝集成到聊天体验中。此功能允许您将网页内容直接整合到对话中,增强互动的丰富度和深度。
    • 🎨 图像生成集成:使用 AUTOMATIC1111 API 或 ComfyUI(本地)以及 OpenAI 的 DALL-E(外部)等选项无缝整合图像生成功能,用动态视觉内容丰富聊天体验。
    • ⚙️ 多模型对话:轻松同时与多个模型互动,利用它们独特的优势获得最佳响应。通过并行利用多样化的模型集提升体验。
    • 🔐 基于角色的访问控制(RBAC):通过受限权限确保安全访问;只有授权人员可以访问您的 Ollama,管理员独享模型创建/拉取权限。
    • 🌐🌍 多语言支持:通过国际化(i18n)支持使用您偏好的语言体验 Open WebUI。加入我们扩展支持语言的行列!我们正在积极寻找贡献者!
    • 🧩 管道、Open WebUI 插件支持:使用Pipelines Plugin Framework将自定义逻辑和 Python 库无缝集成到 Open WebUI。启动 Pipelines 实例,将 OpenAI URL 设置为 Pipelines URL,探索无限可能。示例包括函数调用、控制访问的用户速率限制、使用 Langfuse 等工具进行使用监控、通过 LibreTranslate 实现多语言支持的实时翻译、有害信息过滤等。
    • 🌟 持续更新:我们致力于通过定期更新、修复和新功能改进 Open WebUI。

Dify

Github: https://github.com/langgenius/dify/

  • Star: 55.8K (2024-12-24)
  • 官网: https://dify.ai/
  • 简介:一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。以下是其核心功能列表:
  • 关键特性:
    • 1. 工作流: 在画布上构建和测试功能强大的 AI 工作流程,利用以下所有功能以及更多功能。
    • 2. 全面的模型支持: 与数百种专有/开源 LLMs 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。完整的支持模型提供商列表可在此处找到。
    • 3. Prompt IDE: 用于制作提示、比较模型性能以及向基于聊天的应用程序添加其他功能(如文本转语音)的直观界面。
    • 4. RAG Pipeline: 广泛的 RAG 功能,涵盖从文档摄入到检索的所有内容,支持从 PDF、PPT 和其他常见文档格式中提取文本的开箱即用的支持。
    • 5. Agent 智能体: 您可以基于 LLM 函数调用或 ReAct 定义 Agent,并为 Agent 添加预构建或自定义工具。Dify 为 AI Agent 提供了50多种内置工具,如谷歌搜索、DALL·E、Stable Diffusion 和 WolframAlpha 等。
    • 6. LLMOps: 随时间监视和分析应用程序日志和性能。您可以根据生产数据和标注持续改进提示、数据集和模型。
    • 7. 后端即服务: 所有 Dify 的功能都带有相应的 API,因此您可以轻松地将 Dify 集成到自己的业务逻辑中。

深度解析根技术、根产业及发展格局

根技术是指那些能够催生和支撑一系列衍生技术的基础性技术,它们在科技发展中起着关键的作用。了解根技术的基本概念对于把握技术发展趋势和方向具有重要意义。

一、根技术与根产业释义

鉴于主流学术界以及政策制定部门至今还很少关注到根技术、根产业这样极为重要的问题,几乎还看不到有价值的研究成果,为便于对相关问题的阐述,本文对根技术、根产业做一些释义工作。

所谓根技术,是指能够衍生出并支撑着一个或多个技术簇的技术,可以为整个技术树成长的各个环节及末端持续赋能。根技术具有三大属性:一是技术全新性。主要来自颠覆性技术、突破性技术和新技术,是典型的“从0到1”的科研成果。这种全新属性,使其实现了对旧的根技术的全面颠覆或跨越,再造或重构了其所波及领域的底层技术逻辑,或者产生了新的技术范式,创立了新的底层技术逻辑。二是技术高分蘖性。一个根技术可以同时蘖生出一个乃至多个枝干技术,进而形成“独根成林”之生态,快速产生从技术创新到颠覆多个产业应用模式的爆发效果。三是技术多维应用性。一项根技术通常具有相当程度的泛在性,不仅对其自身领域具有颠覆性、突破性和新创性,且对相关产业领域技术产生重大影响,重塑相关领域技术格局,具有典型的指数效应。

根产业是根技术的产业化结果,是指依据根技术建立的产业链“根部”部分。根产业具有三个显著特征:一是共性架构性。根产业一般不生产面向市场终端的产品或服务,而是以根技术为核心搭建起一个新的产业基础或共性体系,包括技术实现、工艺流程、统一标准、商业模式等。根产业的这种属性,使其对整个产业链具有完全的掌控力,可以精准地“断枝”“去冗”。二是超强稳定性。根产业一旦形成,通常在其全生命周期都会保持相对稳定,由其衍生出的干产业、枝产业可能会不断更新,甚至淘汰,但根产业部分则持续生机勃勃,这就使根产业表现出“根部长青”的活力。三是多向赋能性。根产业是多个相关产业之根,同一根产业之上可以演化出多姿多彩的干、枝、杈、叶、花、果等,具有多向赋能性。

由于根技术与根产业的特殊属性,决定了基于根技术形成的根产业,不仅具有产业主导效应,还具有显著的产业回顾效应、产业旁侧效应和前向效应,在创造新产业的同时,对传统产业、相关产业、未来产业进行颠覆式创新。

因此,各个国家在国际技术、产业竞争中,表面上是创新链、产业链和价值链竞争,深层次则是根技术、根产业的竞争。哪个国家或经济体掌控的根技术、根产业数量越多,质量越高,就会在相关领域的竞争中占据绝对优势,甚至会形成“根霸权”。换言之,当今世界已经发展到“得根技术者得根产业,得根产业者得‘根霸权’”的时代。

二、美国的“断根之策”与我国的“无根之痛”

研究根技术与根产业,一个无法回避的问题就是2018年以来美国对我国技术及产业的“断根之策”与我国自身技术及产业的“无根之痛”。

2018年美国特朗普政府发动贸易战,之后很快就演化成了科技战。在贸易战阶段,我国还可以从容应对,但到了科技战阶段,从大量关键核心技术突然被“卡脖子”,进而到一些美国“头部企业”祭出“根技术”脱钩、“根产业”断链,我们突然发现自身几十年形成的产业布局及发展能力,主体上是“嫁接”在美西方掌控的根技术、根产业之上,无根之繁荣已然是不可持续的,“无根之痛”已经成为我国技术创新、产业创新最大的软肋。

美国为何有底气发动对我国的全面压制,甚至对我国企业及产业进行“长臂管辖”?

一是美国具有强大的根技术、根产业体系,具备了实施“断根之策”的能力。初步梳理一下,美国掌控的根技术及根产业,多达28项之多。如:Android系统是安卓手机行业里的“根”;windows操作系统是PC电脑的“根”;ARM架构是全球计算机芯片行业的“根”;Linux开源体系是很多软件服务的“根”;Raspberry Pi是各类硬件系统的“根”;Wordpress是很多个人网站的“根”;13台“根”服务器是互联网的“根”;以太坊的ERC20协议是很多加密货币的“根”;大模型是强人工智能的“根”;基因编辑是生命科学的“根”;等等。如此多的根技术、根产业,为美国在多个领域确立了“予取予夺”的绝对优势。

二是美国害怕我国发展根技术、根产业,欲利用其综合优势在我国根技术、根产业未萌之时给予“断根”打击。从宏观上看,2015年我国推出《中国制造2025》是引发美西方恐慌之源头,特别是“三步走”的安排(2025年迈入制造强国行列,2035年达到世界制造强国中等水平,2049年综合实力进入世界制造强国之列),使美国感受到了其霸权可能受到的威胁。从微观上看,华为公司5G网络技术的突破及产业化,让美国切身感受到了中国不仅仅要“筑根”,而且已经成功地筑起了5G网络之根,新一代移动通信的创新链、产业链和价值链将由中国企业主导。这对于靠根技术、根产业控制世界的美国来说,引发的恐慌可想而知。

从美国的“断根之策”到我国的“无根之痛”,都充分说明了一件事——把自己的技术体系、产业体系建立在他人的根技术、根产业之上,不仅是靠不住的,且是极其危险的。要有效规避“根霸权”压迫,我国未来技术创新和产业创造,就不能只从某些“环节”入手,而要从“根”抓起,即加大“根技术”研发投入力度,并以“根技术”为基础建立以我为主的“根产业”,实现“换道超车”和反制的实力。

三、我国根技术、根产业突破方向研判

对根技术、根产业突破方向进行研判,是一件非常困难的事情。根据专利文献定量分析、专家专业判断、风险投资强度以及国际主要经济体(美国、德国、日本)的未来产业布局安排和国内相关累积能力、规划、布局,并综合国内外相关智库研究成果,我们认为未来5~15年左右可能成为根技术、根产业重点方向的是未来智能、未来健康、未来能源和未来材料四个领域。

一是未来智能领域。随着宽带物联网、5G/6G、强人工智能交汇推动的加快,信息采集技术、信息传输技术和信息处理技术正在发生跃迁式变化,强人工智能技术及产业、机器人技术及产业、云计算技术及产业、6G网络技术及产业、物联网技术及产业、区块链技术及产业、量子技术及产业,将共同引发一系列的新产业、爆发性产业、战略性产业。我国在这个领域,总体水平在世界第二梯队,量子技术及产业最具有形成中国根技术、根产业的可能。

二是未来健康领域。随着生命科学研究领域大量颠覆性技术的涌现,特别是脑机接口、生物安全、合成生物、基因和细胞治疗等技术研发突破,将催生新的化学药物研发、濒危中药材的人工合成、基因编辑治疗技术研发、干细胞技术研发、生物人工器官技术和免疫治疗技术等的加速产业化。我国在这个领域,已经积累了大量人才和技术成果,特别是合成生物、基因编辑是根技术、根产业的主要突破口。

三是未来能源领域。随着氢能、核能、光伏、风能领域大量突破性技术的出现,新型制氢、先进核裂变能、可控核聚变能,将成为未来能源产业的新主角。在这个领域,我国裂变核能已经与世界顶尖水平相当,聚变核能与国际先进者同样具有可竞争的能力,应该作为未来能源根技术、根产业的主攻方向。

四是未来材料领域。随着一系列新技术的登场,以石墨烯、常温超导材料、生物可降解材料、碳纤维复合材料、新一代3D打印材料、柔性电子材料等为主的新材料将成为未来产业的重要战场。我国在这个领域,柔性电子材料具备一定的领先性,常温超导材料也具备比较高的竞争能力,应该作为未来材料根技术、根产业的重要突破口。

四、具体建议

根技术是控制创新链的总纲,根产业是掌控产业链的基础。只有拥有足够强的根技术、根产业创造能力,只有拥有自主可控的根技术、根产业,才能真正实现科技自立自强,才能建立起自己的“根技术、根产业”优势,反制“根霸权”的讹诈。

具体建议如下:

一是中央科技主管部门,牵头组织制定“根技术与根产业规划”,将其上升为国家重大战略。

二是对于国际、国内尚没有显在领跑者的领域,或者我国已经有了技术比较优势的领域,必须超前布局,倾斜资源投入,创造自己的颠覆性、突破性技术,特别是能够形成可以掌控未来产业创新链、产业链的根技术及根产业,实现换道超车。

三是针对细分领域,组织技术专家、管理专家、企业家,着力发现和培育根技术、根产业。

References