原文:https://mp.weixin.qq.com/s/t99TeeaVhDTuzobY6WkYng
揭秘Linera:高可扩展区块链基础设施,附CLI工具快速上手攻略
linera-protocol 是一个基于Rust构建的高性能、去中心化微服务区块链协议的底层框架。简单讲,它让开发者能用微服务架构轻松搭建区块链应用,提升扩展性和运行效率。适用人群:区块链开发者、去中心化应用开发者、对高性能链上计算感兴趣的技术人员。
项目地址:https://github.com/linera-io/linera-protocol
主要语言:Rust
stars: 29.64k
项目概述
Linera是一个去中心化的区块链基础设施,专为高可扩展性、安全、低延迟的Web3应用程序而设计。
主要优势
- 高可扩展性:能够支持大量的交易和用户,满足Web3应用不断增长的需求。
- 安全性:采用了先进的加密技术和共识机制,保障数据和交易的安全。
- 低延迟:可以实现快速的交易确认和响应,提供流畅的用户体验。
核心功能
- 多链架构:支持微链(microchains),可以实现高效的跨链消息传递和资产转移。
- 智能合约:提供了开发智能合约的SDK,允许开发者使用Rust语言为Wasm虚拟机编写应用程序。
- 钱包管理:通过命令行工具(CLI)可以方便地管理用户钱包、创建链、查询余额和进行转账等操作。
仓库结构
仓库包含多个主要的crates和目录,按照依赖关系从低到高排列:
linera-base
:基础定义,包括密码学相关内容。linera-version
:用于管理二进制文件和服务中的版本信息。linera-views
:将复杂数据结构映射到键值存储的库。linera-execution
:处理Linera应用程序的持久化数据和运行时逻辑。linera-chain
:负责块链、证书和跨链消息的持久化数据和逻辑。linera-storage
:在linera-chain
之上定义协议的存储抽象。linera-core
:Linera协议的核心,包括客户端和服务器逻辑、节点同步等。linera-rpc
:定义RPC消息的数据类型和跟踪相应的数据模式。linera-client
:用于编写Linera客户端的库。linera-service
:包含客户端(CLI钱包)、代理(验证器前端)和服务器的可执行文件。linera-sdk
:用于开发基于Wasm虚拟机的Rust Linera应用程序的库。examples
:提供了用Rust编写的Linera应用程序示例。
可能的应用场景
- 去中心化金融(DeFi):构建高效、安全的借贷、交易、流动性提供等金融应用。
- 非同质化代币(NFT):支持NFT的创建、交易和管理,实现快速的资产转移和所有权验证。
- 供应链管理:通过区块链的不可篡改特性,实现供应链的透明和可追溯性。
快速开始
可以使用Linera CLI工具快速设置本地测试网络,并进行一些微链之间的转账操作。具体步骤如下:
# 确保编译Linera二进制文件并添加到PATH中
export PATH="$PWD/target/debug:$PATH"
# 导入可选的辅助函数
source /dev/stdin <<<"$(linera net helper 2>/dev/null)"
# 启动本地测试网络
linera_spawn \
linera net up --with-faucet --faucet-port 8080
# 记录水龙头的URL
FAUCET_URL=http://localhost:8080
# 设置钱包和存储路径
export LINERA_WALLET="$LINERA_TMP_DIR/wallet.json"
export LINERA_KEYSTORE="$LINERA_TMP_DIR/keystore.json"
export LINERA_STORAGE="rocksdb:$LINERA_TMP_DIR/client.db"
# 初始化新的用户钱包
linera wallet init --faucet $FAUCET_URL
# 请求链
INFO1=($(linera wallet request-chain --faucet $FAUCET_URL))
INFO2=($(linera wallet request-chain --faucet $FAUCET_URL))
CHAIN1="${INFO1[0]}"
ACCOUNT1="${INFO1[1]}"
CHAIN2="${INFO2[0]}"
ACCOUNT2="${INFO2[1]}"
# 显示钱包跟踪的不同链
linera wallet show
# 查询链余额
linera query-balance "$CHAIN1"
linera query-balance "$CHAIN2"
# 进行转账操作
linera transfer 10 --from "$CHAIN1" --to "$CHAIN2"
linera transfer 5 --from "$CHAIN2" --to "$CHAIN1"
# 再次查询余额
linera query-balance "$CHAIN1"
linera query-balance "$CHAIN2"
# 为用户余额充值
linera transfer 5 --from "$CHAIN1" --to "$CHAIN1:$ACCOUNT1"
linera transfer 2 --from "$CHAIN1:$ACCOUNT1" --to "$CHAIN2:$ACCOUNT2"
# 查询用户余额
linera query-balance "$CHAIN1:$ACCOUNT1"
linera query-balance "$CHAIN2:$ACCOUNT2"
12周24课!微软超全AI入门课程,多语言支持还能边学边练!
AI-For-Beginners 是一个面向初学者的人工智能学习课程项目。简单讲,它用12周、24节课带你从零开始了解AI基础知识,配套Jupyter Notebook实践内容,适合边学边练。适用人群:AI初学者、学生、教师及对人工智能感兴趣的非专业人群。
项目地址:https://github.com/microsoft/AI-For-Beginners
主要语言:Jupyter Notebook
stars: 40.6k
这是一个由微软推出的人工智能初学者课程仓库,旨在帮助初学者了解人工智能的基础知识和实践技能。以下是该仓库的详细介绍:
课程概况
- 课程为期12周,包含24节课程,涵盖了人工智能的多个方面,包括不同的人工智能方法、神经网络、深度学习、计算机视觉、自然语言处理等。
- 课程提供了实践课程、测验和实验,帮助学习者巩固所学知识。
- 课程适合初学者,涵盖了TensorFlow和PyTorch等工具,以及人工智能伦理等内容。
多语言支持
该课程支持多种语言,包括法语、西班牙语、德语、俄语、阿拉伯语等,通过GitHub Action实现自动化更新。
学习内容
- 不同的人工智能方法:包括"传统"的符号方法,如知识表示和推理。
- 神经网络和深度学习:使用TensorFlow和PyTorch两个流行的框架,介绍神经网络和深度学习的概念。
- 图像处理和文本处理的神经网络架构:介绍用于处理图像和文本的神经网络架构,但可能在最新技术方面有所欠缺。
- 不太流行的人工智能方法:如遗传算法和多智能体系统。
课程不涵盖内容
- 人工智能在商业中的应用案例:建议学习微软学习平台上的相关课程。
- 经典机器学习:可参考微软的机器学习初学者课程。
- 使用认知服务构建的实用人工智能应用:建议从微软学习平台的相关模块开始学习。
- 特定的机器学习云框架:如Azure Machine Learning、Microsoft Fabric或Azure Databricks,可参考相关学习路径。
- 对话式人工智能和聊天机器人:有单独的学习路径可供参考。
- 深度学习背后的深层数学知识:推荐阅读相关书籍。
课程内容结构
课程内容分为多个部分,每个部分包含多节课程,具体如下:
- 课程设置:帮助学习者设置开发环境。
- 人工智能简介:介绍人工智能的历史和不同方法。
- 符号人工智能:介绍知识表示和专家系统。
- 神经网络简介:介绍感知机、多层感知机和创建自己的框架。
- 计算机视觉:介绍计算机视觉的基础知识、卷积神经网络、预训练网络和迁移学习等。
- 自然语言处理:介绍文本表示、语义词嵌入、语言建模、循环神经网络、生成式循环网络、Transformer和BERT等。
- 其他人工智能技术:介绍遗传算法、深度强化学习和多智能体系统。
- 人工智能伦理:介绍人工智能伦理和负责任的人工智能。
- 额外内容:介绍多模态网络、CLIP和VQGAN等。
课程特点
- 预读材料:每节课程都包含预读材料,帮助学习者提前了解课程内容。
- 可执行的Jupyter笔记本:提供了大量的Jupyter笔记本,包含理论知识和代码示例,帮助学习者更好地理解和实践。
- 实验:部分课程提供了实验,让学习者有机会将所学知识应用到实际问题中。
- 微软学习模块链接:部分课程包含了微软学习平台上相关模块的链接,方便学习者进一步学习。
入门指南
- 设置开发环境:提供了设置开发环境的课程,以及针对教育工作者的课程设置指南。
- 运行代码:介绍了如何在VSCode或Codepace中运行代码。
- 克隆仓库 :学习者可以通过点击"Fork"按钮复制仓库,并使用
git clone
命令克隆到本地。
CopilotKit:快速集成、安全开源的AI助手开发神器!
CopilotKit 是一个提供 React UI 与优雅基础设施的 AI 辅助开发工具库。简单讲,它帮你快速在应用中集成 AI 助手、聊天机器人和智能代理,让 AI 更贴近实际使用场景。适用人群:前端开发者、AI 应用开发者
项目地址:https://github.com/CopilotKit/CopilotKit
主要语言:TypeScript
stars: 23.23k
简介
CopilotKit 是一个用于在应用程序中集成 AI 助手和代理的开源工具包,具有快速集成、框架无关和生产就绪等特点,可帮助开发者在应用中轻松部署深度集成的 AI 助手。
核心功能
- 快速安装与配置 :通过简单的 CLI 命令
npx copilotkit@latest init
即可完成安装,接着添加 CopilotKit 提供者到应用中,实现快速集成。 - 灵活定制:提供两种定制方式,既可以使用无头 UI 进行完全自定义控制,也能借助具有深度定制选项的预构建组件(支持 CSS 定制和传递自定义子组件)。
- 前端动作与生成式 UI :支持前端动作和生成式 UI,具备完整的流式传输功能,可实现如
appendToSpreadsheet
这样的特定操作。 - 应用内协同代理集成:借助 LangGraph 实现应用内协同代理的集成,支持状态共享、代理生成式 UI 以及人工干预审批等功能。
- 中间代理状态流式传输:支持 LangGraph.js 和 LangGraph Python,可对中间代理状态进行流式传输。
优势
- 快速集成:利用 CLI 能够在短时间内完成集成。
- 框架无关:可与 React、Next.js、AGUI 等多种框架协同工作。
- 生产就绪的 UI:提供可定制的组件,或者支持使用无头 UI 进行构建。
- 内置安全机制:具备提示注入保护功能。
- 开源透明:采用开源模式,完全透明且由社区驱动。
应用场景
可用于在各类应用程序中部署深度集成的 AI 助手和代理,辅助用户高效完成任务,像表单填充、状态机管理、数据聊天等场景都适用。
代码示例
-
使用无头 API 和预构建组件
// 无头 UI 实现完全控制
const { visibleMessages, appendMessage, setMessages, ... } = useCopilotChat();// 预构建组件,拥有深度定制选项
<CopilotPopup
instructions={"You are assisting the user as best as you can. Answer in the best way possible given the data you have."}
labels={{ title: "Popup Assistant", initial: "Need any help?" }}
/> -
前端动作与生成式 UI
useCopilotAction({
name: "appendToSpreadsheet",
description: "Append rows to the current spreadsheet",
parameters: [
{ name: "rows", type: "object[]", attributes: [{ name: "cells", type: "object[]", attributes: [{ name: "value", type: "string" }] }] }
],
render: ({ status, args }) => <Spreadsheet data={canonicalSpreadsheetData(args.rows)} />,
handler: ({ rows }) => setSpreadsheet({ ...spreadsheet, rows: [...spreadsheet.rows, ...canonicalSpreadsheetData(rows)] }),
}); -
集成应用内协同代理与 LangGraph
// 应用与代理之间共享状态
const { agentState } = useCoAgent({
name: "basic_agent",
initialState: { input: "NYC" }
});// 代理生成式 UI
useCoAgentStateRender({
name: "basic_agent",
render: ({ state }) => <WeatherDisplay {...state.final_response} />,
});// 人工干预审批
useCopilotAction({
name: "email_tool",
parameters: [
{
name: "email_draft",
type: "string",
description: "The email content",
required: true,
},
],
renderAndWaitForResponse: ({ args, status, respond }) => {
return (
<EmailConfirmation
emailContent={args.email_draft || ""}
isExecuting={status === "executing"}
onCancel={() => respond?.({ approved: false })}
onSend={() =>
respond?.({
approved: true,
metadata: { sentAt: new Date().toISOString() },
})
}
/>
);
},
}); -
中间代理状态流式传输
const modifiedConfig = copilotKitCustomizeConfig(config, {
emitIntermediateState: [{
stateKey: "outline",
tool: "set_outline",
toolArgument: "outline"
}],
});
const response = await ChatOpenAI({ model: "gpt-4o" }).invoke(messages, modifiedConfig);