构建 AI 应用:开源 infra 项目指南

新兴AI工具:改变开发与应用的未来

近半年,AI 相关工具的发布不断更新了大家的认知,好用的新工具在不断涌现,搭建 AI 应用的门槛在逐渐降低,方便开发者更简单快速地构建酷炫项目 - 因此,我们收集了一些可以直接拿来构建 AI 应用的开源 infra 项目。🐍

file

Chroma

出道半年,Chroma 今年四月初宣布了 1800 万美金种子轮。它是一个向量嵌入(embedding)存储,嵌入是 AI 原生表示不同类型数据的方式,因此也是与 AI 驱动的工具和算法的完美选择。 虽然已经有不少向量数据库解决方案,但 Chroma 团队认为都不够开发环境友好(没有找到想要的东西,所以就自己来写一个),它内置了你搭建 AI 应用在嵌入存储方面会需要的所有东西,只要 pip install chromadb 就可以了,无需配置或者额外安装别的东西。

file

因为羡慕,所以再来看一眼他们星光璀璨的资方列表。

file

Langchain 🦜🔗

LangChain 2022 年 10 月发布,是一个能使开发 AI 应用程序更加灵活的框架。 LLM 虽然可以执行许多任务,但无法为某个深入领域知识或专业知识的问题提供具

在C++中,一个类`CHddCheck`继承自`Dahua::Infra::CThread`,通常意味着该类需要实现线程相关的功能,例如重写线程执行函数,管理线程生命周期,或者根据需求添加自定义逻辑。以下是一个可能的实现示例,假设`Dahua::Infra::CThread`是一个提供线程支持的基类,其中包含一个需要子类实现的纯虚函数`run()`。 ### 示例代码 以下是一个简单的`CHddCheck`类的实现,用于执行硬盘检查任务,并在独立的线程中运行。 ```cpp #include <iostream> #include <string> #include <thread> #include <chrono> namespace Dahua { namespace Infra { // 假设 CThread 是一个提供线程功能的基类 class CThread { public: virtual void run() = 0; // 纯虚函数,需要子类实现 virtual void start() { thread_ = std::thread([this]() { run(); }); } virtual void join() { if (thread_.joinable()) { thread_.join(); } } virtual ~CThread() { if (thread_.joinable()) { thread_.detach(); // 避免资源泄漏 } } protected: std::thread thread_; }; } // namespace Infra } // namespace Dahua // CHddCheck 类继承自 Dahua::Infra::CThread class CHddCheck : public Dahua::Infra::CThread { public: CHddCheck(const std::string& deviceName) : deviceName_(deviceName) {} void run() override { std::cout << "Starting HDD check on device: " << deviceName_ << std::endl; // 模拟硬盘检查过程 for (int i = 1; i <= 5; ++i) { std::this_thread::sleep_for(std::chrono::seconds(1)); // 模拟耗时操作 std::cout << "Progress: " << i * 20 << "% completed." << std::endl; } std::cout << "HDD check completed for device: " << deviceName_ << std::endl; } private: std::string deviceName_; }; // 主函数测试 CHddCheck 的线程行为 int main() { CHddCheck hddChecker("/dev/sda1"); hddChecker.start(); // 启动线程 hddChecker.join(); // 等待线程结束 return 0; } ``` ### 代码解析 1. **基类 `Dahua::Infra::CThread`** - 提供了线程的基本功能,包括`run()`(纯虚函数)、`start()`(启动线程)和`join()`(等待线程完成)。 - 使用`std::thread`来管理线程的执行。 2. **派生类 `CHddCheck`** - 继承并重写`run()`方法,实现具体的硬盘检查逻辑。 - 构造函数接受一个设备名称作为参数,用于标识检查的目标设备。 3. **线程执行逻辑** - `start()`方法启动一个新的线程,并在该线程中调用`run()`。 - 在`run()`中,模拟了硬盘检查的过程,使用`std::this_thread::sleep_for`模拟耗时操作。 4. **主函数测试** - 创建`CHddCheck`实例,并调用`start()`和`join()`方法来测试线程行为。 ### 注意事项 - 在实际应用中,`Dahua::Infra::CThread`可能是一个更复杂的类,可能包含线程同步机制、线程优先级设置等功能。 - 如果`Dahua::Infra::CThread`是某个特定库提供的类,建议查阅该库的文档以了解其具体接口和使用方式。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值