AI原生应用的未来:解锁GPT的无限潜力——从原理到实战的深度探索

副标题: 基于大语言模型的下一代应用架构设计与实践

摘要/引言

问题陈述

当我们谈论“AI应用”时,你脑海中浮现的可能是:聊天机器人只会机械回复、推荐系统总是猜不准你的喜好、或者需要手动触发的AI工具。这些应用的共性是——AI是“附加组件”,而非核心。传统应用的架构设计以“规则引擎+数据库”为核心,无法处理复杂的非结构化需求(比如自然语言对话、多模态理解),更无法实现“主动决策”。

核心方案

AI原生应用(AI-Native Application) 给出了答案:从架构设计到功能实现,以大语言模型(如GPT)为核心引擎,让应用具备上下文理解、自动决策、工具调用、持续学习的能力。它不是“用AI优化传统应用”,而是“用AI重新定义应用的边界”。

主要成果

读完本文,你将:

  • 理解AI原生应用与传统应用的本质区别;
  • 掌握GPT在AI原生应用中的核心作用(上下文学习、工具调用、多模态支持);
  • 从零构建一个AI原生智能客服应用(包含前后端、上下文管理、工具调用);
  • 了解AI原生应用的性能优化技巧与未来趋势。

文章导览

本文分为四部分:

  1. 基础篇:解释AI原生应用的核心概念与GPT的能力边界;
  2. 实战篇:分步实现一个AI原生智能客服(从环境搭建到前后端整合);
  3. 优化篇:探讨性能瓶颈与最佳实践;
  4. 展望篇:预测AI原生应用的未来方向。

目标读者与前置知识

目标读者

  • 有Python基础(能写简单的函数、调用API);
  • 听说过GPT/LLM,但不清楚如何用它们构建“原生应用”;
  • 前端/后端开发者想了解AI原生架构;
  • 产品经理想探索AI应用的技术边界。

前置知识

  • Python编程(基础语法、函数、模块);
  • REST API(知道如何用requests调用接口);
  • 基本的机器学习概念(可选,比如“token”“上下文窗口”)。

文章目录

(点击跳转)

  1. 引言与基础
  2. 核心概念:AI原生应用 vs 传统应用
  3. GPT的核心能力:为什么它能成为AI原生应用的引擎?
  4. 环境准备:搭建AI原生应用开发环境
  5. 实战:从零构建AI原生智能客服
    5.1 需求分析:智能客服的核心功能
    5.2 架构设计:前后端与GPT的协同
    5.3 步骤1:实现上下文管理(记住对话历史)
    5.4 步骤2:实现工具调用(查询订单状态)
    5.5 步骤3:开发前端(Streamlit聊天界面)
    5.6 步骤4:开发后端(FastAPI接口)
    5.7 步骤5:整合与测试
  6. 关键代码解析:为什么要这样设计?
  7. 性能优化:解决GPT应用的常见瓶颈
  8. 常见问题与解决方案
  9. 未来展望:AI原生应用的下一个风口
  10. 总结
  11. 参考资料
  12. 附录:完整源代码

核心概念:AI原生应用 vs 传统应用

什么是“AI原生应用”?

AI原生应用的定义是:从架构到功能,以AI(尤其是大语言模型)为核心驱动力,而非“传统应用+AI插件”。它的核心特征是:

  • 主动理解:能理解自然语言、图像、语音等多模态输入,无需用户按照固定格式操作;
  • 自动决策:能根据上下文判断下一步动作(比如“是否需要调用工具”“是否需要追问用户”);
  • 持续进化:能从用户交互中学习(比如记住用户偏好、优化回答质量);
  • 工具协同:能调用外部系统(数据库、API、物联网设备)完成复杂任务。

传统应用 vs AI原生应用:本质区别

维度 传统应用 AI原生应用
核心引擎 规则引擎+数据库 大语言模型(GPT)
用户交互方式 固定表单/按钮 自然语言/多模态
决策逻辑 预先编写的if-else规则 GPT的上下文推理
扩展能力 需要修改代码添加新功能 通过prompt优化或工具调用扩展
学习能力 无(规则固定) 有(从对话中学习用户偏好)

举个例子:

  • 传统客服系统:用户必须点击“查询订单”按钮,输入订单号,才能获取状态;
  • AI原生客服系统:用户说“我的订单怎么还没到?”,系统会自动识别“订单查询”意图,追问订单号,调用订单API,返回结果。

GPT的核心能力:为什么它能成为AI原生应用的引擎?

GPT(Generative Pre-trained Transformer)是AI原生应用的“大脑”,它的核心能力决定了应用的边界:

1. 上下文学习(In-Context Learning)

GPT能根据当前对话历史理解用户需求。比如:
用户:“我想买一件红色的外套。”
GPT:“好的,请问你需要什么尺码?”
用户:“M码。”
GPT:“已为你筛选红色M码外套,价格在100-200元之间的有以下几款:…”

这里,GPT记住了“红色”“外套”“M码”等上下文信息,无需额外存储。

2. 工具调用(Function Call)

GPT能根据问题判断是否需要调用外部工具(比如API、数据库)。比如:
用户:“我的订单123456什么时候到?”
GPT:“正在查询订单状态… 订单123456已发货,预计明天到达。”

这里,GPT识别到“订单查询”需要调用工具,自动触发了订单API的调用。

3. 多模态支持(未来潜力)

GPT-4V(视觉版)已经能理解图像,未来还会支持语音、视频。比如:
用户发送一张订单截图,GPT能自动识别订单号,查询状态,并用语音回复。

4. 生成能力(Text Generation)

GPT能生成自然、连贯的文本,比如回答问题、写文章、生成代码。这是AI原生应用的“输出引擎”。

环境准备:搭建AI原生应用开发环境

所需工具与版本

  • Python:3.10+(推荐3.11);
  • 框架/库
    • LangChain:简化LLM应用开发(版本:0.0.300+);
    • FastAPI:构建高性能后端(版本:0.100+);
    • Streamlit:快速构建前端(版本:1.20+);
    • OpenAI:调用GPT API(版本:0.27.0+);
  • 其他:OpenAI API密钥(需要注册OpenAI账号,获取密钥)。

配置步骤

1. 创建虚拟环境(推荐)
# 创建虚拟环境
python -m venv ai-native-env

# 激活虚拟环境(Windows)
ai-native-env\Scripts\activate

# 激活虚拟环境(macOS/Linux)
source ai-native-env/bin/activate
2. 安装依赖

创建requirements.txt文件,内容如下:

openai==0.27.0
langchain==0.0.300
fastapi==0.100.0
uvicorn==0.23.0
streamlit==1.20.0
python-dotenv==1.0.0

执行安装命令:

pip install -r requirements.txt
3. 设置OpenAI API密钥

创建.env文件,添加你的API密钥:

OPENAI_API_KEY=your-api-key-here

(注:API密钥可以在OpenAI官网的“API Keys”页面获取:https://platform.openai.com/account/api-keys)

实战:从零构建AI原生智能客服

需求分析:智能客服的核心功能

我们要构建一个AI原生智能客服,具备以下功能:

  1. 多轮对话:记住用户的历史对话(比如用户先说“我想查订单”,再给订单号,系统能关联起来);
  2. 工具调用:当用户查询订单时,自动调用订单API获取状态;
  3. 自然交互:用自然语言对话,无需固定格式;
  4. 前端界面:有一个简单的聊天窗口,方便用户使用。

架构设计:前后端与GPT的协同

我们的架构分为三层:

  • 前端:用Streamlit构建聊天界面,负责用户输入与结果展示;
  • 后端:用FastAPI构建接口,负责接收前端请求、调用GPT引擎;
  • GPT引擎:用LangChain整合GPT,负责上下文管理、工具调用、生成回复。

架构图如下(用文字描述):

用户 → 前端(Streamlit)→ 后端(FastAPI)→ LangChain(上下文管理+工具调用)→ GPT API → 后端 → 前端 → 用户

步骤1:实现上下文管理(记住对话历史)

上下文管理是AI原生应用的核心,它让GPT能“记住”之前的对话。我们用LangChain的ConversationBufferMemory实现。

创建chat_chain.py文件,代码如下:

from langchain.llms import OpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from dotenv import load_dotenv

# 加载环境变量(API密钥)
load_dotenv()

# 初始化LLM(GPT-3.5-turbo,温度设置为0.7,控制输出随机性)
llm = OpenAI(model_name="gpt-3.5-turbo-instruct", temperature=0.7)

# 初始化记忆模块(保存对话历史)
memory = ConversationBufferMemory()

# 创建对话链(将LLM与记忆模块结合)
conversation_chain = ConversationChain(llm=llm, memory=memory)

# 测试对话
if __name__ == "__main__":
    print("AI客服:你好!有什么可以帮你的?")
    while True:
        user_input = input("用户:")
        if user_input == "退出":
            break
        response = conversation_chain.run(user_input)
        print(f"AI客服:{response}")

代码解释

  • ConversationBufferMemory:保存对话历史(比如用户说的“我想查订单”,AI说的“请提供订单号”);
  • ConversationChain:将LLM与记忆模块结合,生成带上下文的回复;
  • temperature:0.7表示输出有一定随机性(0=完全确定,1=非常随机)。

运行测试

python chat_chain.py

输出示例:

AI客服:你好!有什么可以帮你的?
用户:我想查订单。
AI客服:当然可以!请提供你的订单号,我会帮你查询。
用户:我的订单号是123456。
AI客服:好的,我正在查询订单号123456的状态...(这里需要调用工具)

步骤2:实现工具调用(查询订单状态)

接下来,我们让AI能调用订单查询API。用LangChain的ToolAgent实现。

2.1 定义订单查询函数

首先,我们需要一个“模拟”的订单查询函数(实际可以替换为真实的API调用)。在chat_chain.py中添加:

from langchain.agents import Tool, ConversationalAgent, AgentExecutor

# 模拟订单查询API(实际可以替换为requests调用真实API)
def check_order_status(order_id: str) -> str:
    """查询用户订单状态的工具,需要订单号作为参数。"""
    # 假设我们有一个订单数据库,这里用字典模拟
    orders = {
        "123456": "已发货,预计明天到达",
        "654321": "未付款,请尽快支付",
        "789012": "已签收,感谢你的购买"
    }
    return orders.get(order_id, "订单号不存在,请检查后重试。")
2.2 创建工具对象

将函数包装成LangChain的Tool对象:

# 创建工具列表(可以添加多个工具)
tools = [
    Tool(
        name="CheckOrderStatus",  # 工具名称(GPT会用这个名称调用)
        func=check_order_status,  # 工具函数
        description="用于查询用户的订单状态,需要订单号作为参数。"  # 工具描述(GPT会根据这个判断是否调用)
    )
]
2.3 初始化Agent

Agent是“中间层”,它让GPT能判断是否需要调用工具。修改chat_chain.py中的对话链初始化:

# 初始化Agent(ConversationalAgent适合对话场景)
agent = ConversationalAgent.from_llm_and_tools(
    llm=llm,
    tools=tools,
    verbose=True  # 打印调试信息(比如GPT是否调用了工具)
)

# 创建Agent执行器(整合Agent、工具、记忆模块)
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    memory=memory,
    verbose=True
)
2.4 测试工具调用

修改if __name__ == "__main__"部分:

if __name__ == "__main__":
    print("AI客服:你好!有什么可以帮你的?")
    while True:
        user_input = input("用户:")
        if user_input == "退出":
            break
        # 用Agent执行器代替原来的conversation_chain
        response = agent_executor.run(user_input)
        print(f"AI客服:{response}")

运行测试

python chat_chain.py

输出示例(带调试信息):

AI客服:你好!有什么可以帮你的?
用户:我的订单号是123456,能查一下状态吗?

> Entering new AgentExecutor chain...
我需要帮用户查询订单状态,用户提供了订单号123456。首先,我应该调用CheckOrderStatus工具,传入订单号作为参数。让我检查一下工具的描述,确认是否需要其他参数。工具描述说需要订单号,所以没问题。现在生成工具调用的格式:<|FunctionCallBegin|>[{"name":"CheckOrderStatus","parameters":{"order_id":"123456"}}]<|FunctionCallEnd|>。

> 调用工具:CheckOrderStatus,参数:{'order_id': '123456'}
> 工具返回结果:已发货,预计明天到达

现在我有了订单状态的信息,需要把它整理成自然语言回复给用户。用户的问题已经解决,不需要进一步追问。回复应该友好且清晰,告诉用户订单的状态和预计到达时间。

> Exiting chain.
AI客服:订单号123456的状态是:已发货,预计明天到达。

关键说明

  • Agent会根据用户问题和工具描述,自动判断是否需要调用工具;
  • 工具调用的格式是<|FunctionCallBegin|>[{"name":"工具名称","parameters":{"参数名":"参数值"}}]<|FunctionCallEnd|>(LangChain会自动处理这个格式);
  • verbose=True会打印调试信息,方便开发时查看GPT的思考过程。

步骤3:开发前端(Streamlit聊天界面)

前端用Streamlit构建,它能快速生成web界面,适合原型开发。

创建frontend.py文件,代码如下:

import streamlit as st
import requests
from dotenv import load_dotenv

# 加载环境变量(后端API地址)
load_dotenv()
API_URL = "http://localhost:8000/chat"  # 后端接口地址

# 初始化会话状态(保存聊天历史)
if "messages" not in st.session_state:
    st.session_state.messages = []

# 设置页面标题
st.title("AI原生智能客服")

# 显示聊天历史
for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.markdown(message["content"])

# 处理用户输入
if prompt := st.chat_input("请输入你的问题..."):
    # 添加用户消息到会话状态
    st.session_state.messages.append({"role": "user", "content": prompt})
    with st.chat_message("user"):
        st.markdown(prompt)
    
    # 调用后端API
    try:
        response = requests.post(API_URL, json={"prompt": prompt})
        response.raise_for_status()  # 检查HTTP状态码
        assistant_response = response.json()["response"]
    except Exception as e:
        assistant_response = f"抱歉,发生了错误:{str(e)}"
    
    # 添加助手消息到会话状态
    st.session_state.messages.append({"role": "assistant", "content": assistant_response})
    with st.chat_message("assistant"):
        st.markdown(assistant_response)

代码解释

  • st.session_state:Streamlit的会话状态,用于保存聊天历史(刷新页面不会丢失);
  • st.chat_input:生成聊天输入框;
  • st.chat_message:生成聊天消息框(区分用户和助手);
  • requests.post:调用后端的/chat接口,获取助手回复。

步骤4:开发后端(FastAPI接口)

后端用FastAPI构建,它能快速生成高性能的REST API。

创建backend.py文件,代码如下:

from fastapi import FastAPI
from pydantic import BaseModel
from langchain.agents import AgentExecutor
from chat_chain import agent_executor  # 导入之前创建的Agent执行器
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

# 初始化FastAPI应用
app = FastAPI(title="AI原生智能客服后端", version="1.0")

# 请求模型(定义前端传入的参数)
class ChatRequest(BaseModel):
    prompt: str  # 用户的问题

# 聊天接口(POST方法)
@app.post("/chat", response_model=dict)
async def chat(request: ChatRequest):
    try:
        # 调用Agent执行器生成回复
        response = agent_executor.run(request.prompt)
        return {"response": response}
    except Exception as e:
        return {"response": f"抱歉,发生了错误:{str(e)}"}

# 运行服务器(用于开发环境)
if __name__ == "__main__":
    import uvicorn
    uvicorn.run("backend.py:app", host="0.0.0.0", port=8000, reload=True)

代码解释

  • ChatRequest:用Pydantic定义请求模型,确保前端传入的参数符合要求;
  • /chat接口:接收用户的prompt,调用agent_executor生成回复,返回给前端;
  • uvicorn.run:运行FastAPI服务器(reload=True表示修改代码后自动重启)。

步骤5:整合与测试

现在,我们需要启动后端和前端,测试整个流程是否正常。

5.1 启动后端

打开一个终端,激活虚拟环境,运行:

python backend.py

后端会运行在http://localhost:8000,可以用浏览器访问http://localhost:8000/docs查看API文档(FastAPI自动生成)。

5.2 启动前端

打开另一个终端,激活虚拟环境,运行:

streamlit run frontend.py

前端会运行在http://localhost:8501,用浏览器访问这个地址,就能看到聊天界面。

5.3 测试流程
  1. 在前端输入“你好,我想查订单”,点击发送;
  2. 助手回复“当然可以!请提供你的订单号,我会帮你查询。”;
  3. 输入“我的订单号是123456”,点击发送;
  4. 助手回复“订单号123456的状态是:已发货,预计明天到达。”。

截图展示(用文字描述):

  • 左侧是用户输入的“我的订单号是123456”;
  • 右侧是助手的回复,包含订单状态;
  • 聊天历史保留了之前的对话。

关键代码解析:为什么要这样设计?

1. 为什么用LangChain?

LangChain是一个LLM应用开发框架,它简化了上下文管理、工具调用、Agent创建等流程。比如:

  • 不需要手动处理对话历史的存储(ConversationBufferMemory帮你做了);
  • 不需要手动生成工具调用的格式(Agent帮你做了);
  • 不需要手动整合LLM和工具(AgentExecutor帮你做了)。

如果不用LangChain,你需要自己写代码处理这些逻辑,会非常繁琐。

2. 为什么用FastAPI?

FastAPI是一个高性能的Python后端框架,它的特点是:

  • 快(比Flask快很多);
  • 自动生成API文档(/docs接口);
  • 支持异步(适合高并发场景)。

对于AI原生应用来说,后端需要处理大量的GPT调用请求,FastAPI能很好地应对。

3. 为什么用Streamlit?

Streamlit是一个快速构建数据应用的框架,它的特点是:

  • 代码量少(几行代码就能生成一个web界面);
  • 实时更新(修改代码后自动刷新页面);
  • 适合原型开发(快速验证想法)。

对于AI原生应用的前端原型来说,Streamlit是一个很好的选择。

性能优化:解决GPT应用的常见瓶颈

1. 上下文长度限制

GPT-3.5-turbo的上下文窗口是4k token(约3000字),如果对话历史太长,会超过这个限制,导致GPT无法处理。

解决方案

  • ConversationSummaryMemory代替ConversationBufferMemory,它会自动把旧的对话总结成摘要,减少上下文长度;
  • 代码示例:
    from langchain.memory import ConversationSummaryMemory
    
    # 初始化摘要记忆模块(需要LLM来生成摘要)
    memory = ConversationSummaryMemory(llm=llm)
    

2. GPT调用速度慢

GPT-3.5-turbo的调用速度约为1000 token/秒,如果生成的回复很长,会让用户等待很久。

解决方案

  • 限制回复长度(比如用max_tokens参数设置最大token数);
  • 代码示例:
    llm = OpenAI(model_name="gpt-3.5-turbo-instruct", temperature=0.7, max_tokens=500)
    
  • 使用更快的模型(比如gpt-3.5-turbotext-davinci-003快)。

3. 工具调用失败

工具调用失败的常见原因是:

  • 工具描述不清晰(GPT不知道什么时候调用);
  • 参数错误(比如订单号格式不正确)。

解决方案

  • 优化工具描述(比如“用于查询用户的订单状态,必须提供12位数字的订单号”);
  • 添加参数校验(比如在check_order_status函数中检查订单号是否为12位数字);
  • 代码示例:
    def check_order_status(order_id: str) -> str:
        if not order_id.isdigit() or len(order_id) != 12:
            return "订单号格式错误,请提供12位数字的订单号。"
        # 后续逻辑...
    

常见问题与解决方案

1. API调用失败(提示“Invalid API key”)

原因:OpenAI API密钥错误或过期。
解决方案

  • 检查.env文件中的OPENAI_API_KEY是否正确;
  • 登录OpenAI官网,确认密钥是否有效(https://platform.openai.com/account/api-keys)。

2. 上下文丢失(AI不记得之前的对话)

原因:记忆模块没有正确配置。
解决方案

  • 检查ConversationChainAgentExecutor是否使用了memory对象;
  • 比如:conversation_chain = ConversationChain(llm=llm, memory=memory)

3. 工具调用不触发(AI没有调用订单查询工具)

原因:工具描述不清晰,GPT不知道什么时候调用。
解决方案

  • 优化工具描述,明确说明工具的用途和需要的参数;
  • 比如:description="用于查询用户的订单状态,需要12位数字的订单号作为参数。"

4. 前端无法连接后端(提示“Connection refused”)

原因:后端没有启动或端口号错误。
解决方案

  • 检查后端是否运行在http://localhost:8000
  • 检查前端frontend.py中的API_URL是否正确。

未来展望:AI原生应用的下一个风口

1. 多模态AI原生应用

未来,AI原生应用将支持图像、语音、视频等多模态输入。比如:

  • 用户发送一张破损商品的照片,AI自动识别破损情况,生成售后工单;
  • 用户用语音说“把客厅的灯调亮”,AI自动调用物联网API,调整灯光亮度。

2. 自主学习的AI原生应用

当前的AI原生应用需要手动优化prompt或工具,未来将实现自主学习

  • 从用户交互中学习偏好(比如用户喜欢简洁的回答,AI会自动调整回复风格);
  • 从工具调用结果中学习(比如某工具经常返回错误,AI会自动切换到其他工具)。

3. 行业特定的AI原生应用

AI原生应用将深入医疗、法律、教育等行业:

  • 医疗:AI原生诊断系统,能理解患者的症状描述,调用医疗数据库,生成诊断建议;
  • 法律:AI原生法律咨询系统,能理解用户的法律问题,调用法律条文数据库,生成建议;
  • 教育:AI原生辅导系统,能理解学生的学习需求,调用教学资源,生成个性化学习计划。

4. 开源AI原生应用生态

随着开源LLM(比如Llama 2、Falcon)的普及,未来将出现开源AI原生应用生态

  • 开发者可以用开源LLM构建AI原生应用,无需依赖OpenAI;
  • 社区将共享各种AI原生应用的模板(比如智能客服、代码助手、内容生成)。

总结

AI原生应用是下一代应用的核心形态,它以GPT为核心引擎,具备上下文理解、自动决策、工具调用、持续学习的能力。本文通过一个AI原生智能客服的实战案例,展示了如何用LangChain、FastAPI、Streamlit构建这样的应用。

关键要点回顾

  • AI原生应用与传统应用的本质区别:以AI为核心,而非附加组件;
  • GPT的核心能力:上下文学习、工具调用、多模态支持;
  • 开发AI原生应用的关键步骤:上下文管理、工具调用、前后端整合;
  • 性能优化技巧:上下文压缩、限制回复长度、优化工具描述。

未来建议

  • 尝试用LangChain构建自己的AI原生应用(比如代码助手、内容生成器);
  • 关注开源LLM的发展(比如Llama 2、Falcon),降低应用成本;
  • 探索多模态AI原生应用(比如结合图像、语音)。

AI原生应用的未来充满无限可能,期待你成为这个领域的探索者!

参考资料

  1. OpenAI官方文档:https://platform.openai.com/docs/
  2. LangChain官方文档:https://python.langchain.com/
  3. FastAPI官方文档:https://fastapi.tiangolo.com/
  4. Streamlit官方文档:https://docs.streamlit.io/
  5. 论文:《Language Models as General-Purpose Interfaces》(https://arxiv.org/abs/2206.06336)
  6. 书籍:《AI Native: Designing Applications for Artificial Intelligence》(作者:Andrew Ng)

附录:完整源代码

本文的完整源代码可以在GitHub仓库中找到:
仓库地址:https://github.com/your-username/ai-native-customer-service
包含内容

  • chat_chain.py:GPT引擎与工具调用逻辑;
  • backend.py:FastAPI后端接口;
  • frontend.py:Streamlit前端界面;
  • requirements.txt:依赖列表;
  • .env:环境变量配置文件(需要添加自己的API密钥)。

运行步骤

  1. 克隆仓库:git clone https://github.com/your-username/ai-native-customer-service.git
  2. 进入仓库目录:cd ai-native-customer-service
  3. 创建虚拟环境并激活(参考之前的步骤);
  4. 安装依赖:pip install -r requirements.txt
  5. 修改.env文件,添加自己的OpenAI API密钥;
  6. 启动后端:python backend.py
  7. 启动前端:streamlit run frontend.py
  8. 用浏览器访问http://localhost:8501,开始使用。

作者:[你的名字]
博客:[你的博客地址]
GitHub:[你的GitHub地址]
联系我:[你的邮箱或社交媒体]

如果本文对你有帮助,请点赞、收藏、转发,你的支持是我继续分享的动力! 😊

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐