Project Icon

resonance

异步PHP框架,优化AI和微服务通信

Resonance是一款现代PHP框架,专注于异步处理和服务间通信。它集成了AI功能,支持开源LLM和GraphQL,并优化了WebSocket和RPC实现。该框架适用于构建高性能、可扩展的Web应用,尤其擅长处理AI驱动和IO密集型任务。Resonance基于Swoole构建,确保稳定性能,并提供完整的开发工具包。

共振

关于共振

共振是从零开始设计的,旨在促进基础设施内部及更广泛范围内服务之间的互操作性和消息传递。它提供AI功能,内置网络服务器,并集成了llama.cpp

充分利用PHP的异步特性。基于Swoole构建。

为什么选择共振?

可预测的性能

共振的设计优先考虑:无内存泄漏、无阻塞操作和无垃圾收集器带来的意外。

大部分内部结构是只读和无状态的。应用程序启动后,不会干扰JIT和操作码(反射仅在应用程序启动期间使用),因此在运行时不会出现意外的性能下降。

有主见的

所有底层库都经过彻底测试,确保它们能够正确协同工作,相互补充,并在异步环境中完美运行。

例如,共振实现了自定义的Doctrine驱动,因此它使用Swoole的连接池。

解决输入/输出问题

共振旨在处理IO密集型任务,如提供机器学习模型服务、处理WebSocket连接和处理长时间运行的HTTP请求。

它将现代应用程序视为一组异步通信的服务混合体,包括AI补全和机器学习推理,因此提供了一套工具,使这种通信尽可能简单。

完整的软件包

共振包含构建现代Web应用程序所需的一切,从HTTP服务器到AI功能。

它提供安全特性、HTML模板、与开源LLM的集成,并提供服务机器学习模型的能力。

文档

https://resonance.distantmagic.com/

安装

最佳的安装方法是使用Composer的create-project命令:

composer create-project distantmagic/resonance-project my-project

共振要求PHP最低版本为8.2,并需要Data Structures和Swoole扩展。在我们的安装指南中可以了解更多关于必需和推荐扩展的信息,以及其他安装方法。

首次使用

安装项目后,您需要创建一个config.ini文件(提供了config.ini.example),然后使用bin/resonance.php作为入口点。

运行服务器

php bin/resonance.php serve启动内置的HTTP服务器。如果需要,您可以生成本地开发用SSL证书

特性

与开源LLM聊天

创建提示控制器直接回答用户的提示。

LLM负责确定用户的意图,您可以专注于采取适当的行动。

#[RespondsToPromptSubject(
    action: 'adopt',
    subject: 'cat',
)]
#[Singleton(collection: SingletonCollection::PromptSubjectResponder)]
readonly class CatAdopt implements PromptSubjectResponderInterface
{
    public function respondToPromptSubject(PromptSubjectRequest $request, PromptSubjectResponse $response): void
    {
        // 通过WebSocket传输消息...

        $response->write("给你:\n\n");
        $response->write("   |\_._/|\n");
        $response->write("   | o o |\n");
        $response->write("   (  T  )\n");
        $response->write("  .^`-^-`^.\n");
        $response->write("  `.  ;  .`\n");
        $response->write("  | | | | |\n");
        $response->write(" ((_((|))_))\n");
        $response->end();
    }
}

关键之处异步化

以较小的开销异步响应传入的RPC或WebSocket消息(或两者结合)。

您可以使用属性设置所有异步功能。无需复杂的配置。

#[RespondsToWebSocketJsonRPC(JsonRPCMethod::Echo)]
#[Singleton(collection: SingletonCollection::WebSocketJsonRPCResponder)]
final readonly class EchoResponder extends WebSocketJsonJsonRPCResponder
{
    public function getConstraint(): Constraint
    {
        return new StringConstraint();
    }

    public function onRequest(
        WebSocketAuthResolution $webSocketAuthResolution,
        WebSocketConnection $webSocketConnection,
        RPCRequest $rpcRequest,
    ): void {
        $webSocketConnection->push(new JsonRPCResponse(
            $rpcRequest,
            $rpcRequest->payload,
        ));
    }
}

简单的事情保持简单

编写HTTP控制器与同步代码类似。

控制器具有新的令人兴奋的功能,充分利用了异步环境。

#[RespondsToHttp(
    method: RequestMethod::GET,
    pattern: '/',
)]
function Homepage(ServerRequestInterface $request, ResponseInterface $response): TwigTemplate
{
    return new TwigTemplate('website/homepage.twig');
}

一致性是关键

无论项目规模如何,您都可以保持相同的软件编写方法。

没有不断增长的中央配置文件或服务依赖注册表。代码模块之间的每个关系都局限于这些模块。

#[ListensTo(HttpServerStarted::class)]
#[Singleton(collection: SingletonCollection::EventListener)]
final readonly class InitializeErrorReporting extends EventListener
{
    public function handle(object $event): void
    {
        // ...
    }
}

PHP中的Promise

共振提供了Promise/A+规范的部分实现,以处理各种异步任务。

$future1 = new SwooleFuture(function (int $value) {
    assert($value === 1);

    return $value + 2;
});

$future2 = $future1->then(new SwooleFuture(function (int $value) {
    assert($value === 3);

    return $value + 4;
}));

assert($future2->resolve(1)->result === 7);

内置GraphQL支持

您可以仅使用PHP属性构建复杂的GraphQL模式。

共振负责重用SQL查询并优化资源使用。

所有字段都可以异步解析。

#[GraphQLRootField(
    name: 'blogPosts',
    type: GraphQLRootFieldType::Query,
)]
#[Singleton(collection: SingletonCollection::GraphQLRootField)]
final readonly class Blog implements GraphQLFieldableInterface
{
    public function __construct(
        private DatabaseConnectionPoolRepository $connectionPool,
        private BlogPostType $blogPostType,
    ) {}

    public function resolve(): GraphQLReusableDatabaseQueryInterface
    {
        return new SelectBlogPosts($this->connectionPool);
    }

    public function toGraphQLField(): array
    {
        return [
            'type' => new ListOfType($this->blogPostType),
            'resolve' => $this->resolve(...),
        ];
    }
}

教程

社区

您可以在这里找到官方渠道:

许可证

共振框架是根据MIT许可证开源的软件。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号