月度归档: 2024 年 8 月

  • 读故事学Predis

    米小饭最近接到了一个新项目,需要使用Redis数据库来优化网站性能。但是她对Redis还不太熟悉,特别是不知道该如何在PHP中操作Redis。正当她一筹莫展之际,她想起了自己的好朋友步子哥是个资深的后端工程师,于是决定向他求助。

    米小饭: “步子哥,救命啊!我接了个新项目,需要用PHP操作Redis,但我完全不会啊!”

    步子哥: “别着急,小饭。Redis确实是个很强大的工具,但操作起来其实并不难。对了,你听说过Predis这个PHP库吗?”

    米小饭: “Predis?没有诶,那是什么?”

    步子哥: “Predis是一个功能丰富且灵活的PHP Redis客户端库。它支持Redis 3.0到7.2版本,还有很多强大的特性。我们一起来看看吧!”

    米小饭: “哇,听起来不错!那要怎么开始使用呢?”

    步子哥: “首先,我们需要安装Predis。最简单的方法是使用Composer。你只需要在命令行中运行:

    composer require predis/predis

    这样就可以将Predis添加到你的项目中了。”

    米小饭: “好的,我试试看。” (敲击键盘) “嗯,安装成功了!接下来呢?”

    步子哥: “接下来,我们来看看如何连接到Redis服务器。Predis使用起来非常简单,看这个例子:

    client = new Predis\Client();client->set('foo', 'bar');
    value =client->get('foo');

    这段代码创建了一个Predis客户端,然后设置了一个键值对,最后又获取了这个值。默认情况下,Predis会连接到本地的Redis服务器,使用默认端口6379。”

    米小饭: “哇,看起来真的很简单!但如果我的Redis服务器不在本地怎么办?”

    步子哥: “不用担心,Predis允许你指定连接参数。你可以使用数组或URI字符串来指定:

    // 使用数组指定参数
    client = new Predis\Client([     'scheme' => 'tcp',     'host'   => '10.0.0.1',     'port'   => 6379, ]);  // 或者使用URI字符串client = new Predis\Client('tcp://10.0.0.1:6379');

    这样你就可以连接到任何Redis服务器了。”

    米小饭: “太棒了!那如果Redis服务器需要密码呢?”

    步子哥: “很好的问题!对于需要密码的服务器,你只需要在参数中添加password即可:

    client = new Predis\Client([     'scheme' => 'tcp',     'host'   => '10.0.0.1',     'port'   => 6379,     'password' => 'your_password_here' ]);</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> 如果你使用的是Redis 6.0及以上版本,并且启用了ACL,那么你还需要提供username: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>client = new Predis\Client([
        'scheme' => 'tcp',
        'host'   => '10.0.0.1',
        'port'   => 6379,
        'username' => 'your_username',
        'password' => 'your_password_here'
    ]);

    这样就可以安全地连接到需要认证的Redis服务器了。”

    米小饭: “原来如此!那如果我想连接到本地的Redis服务器,但是它使用的是UNIX域套接字呢?”

    步子哥: “Predis也支持通过UNIX域套接字连接哦。你只需要这样做:

    client = new Predis\Client(['scheme' => 'unix', 'path' => '/path/to/redis.sock']); // 或者client = new Predis\Client('unix:/path/to/redis.sock');

    这样就可以通过UNIX域套接字连接到本地的Redis服务器了。”

    米小饭: “哇,Predis真的考虑得很周到啊!那如果我需要连接到一个使用TLS/SSL加密的远程Redis实例呢?”

    步子哥: “没问题,Predis也支持TLS/SSL加密连接。你可以这样做:

    client = new Predis\Client([   'scheme' => 'tls',   'ssl'    => ['cafile' => 'private.pem', 'verify_peer' => true], ]);</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> 或者使用URI字符串: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>client = new Predis\Client('tls://127.0.0.1?ssl[cafile]=private.pem&ssl[verify_peer]=1');

    这样就可以安全地连接到加密的Redis实例了。”

    米小饭: “太棒了!Predis真的很强大啊。那么,连接建立后,我该如何执行Redis命令呢?”

    步子哥: “执行Redis命令非常简单。Predis的客户端对象有许多方法,对应着Redis的各种命令。比如:

    // 设置一个键值对
    client->set('mykey', 'Hello, Redis!');  // 获取一个值value = client->get('mykey');  // 检查一个键是否存在exists = client->exists('mykey');  // 删除一个键client->del('mykey');
    
    // 增加一个计数器
    newValue =client->incr('counter');
    
    // 设置一个带过期时间的键值对
    client->setex('tempkey', 30, 'This key will expire in 30 seconds');</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> 这些只是一些基本的例子,Predis支持所有的Redis命令。" <!-- /wp:paragraph -->  <!-- wp:paragraph --> 米小饭: "哇,看起来真的很方便!那如果我想一次执行多个命令呢?" <!-- /wp:paragraph -->  <!-- wp:paragraph --> 步子哥: "好问题!Predis支持管道(pipeline)操作,可以让你一次发送多个命令,从而提高性能。看这个例子: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>responses = client->pipeline(function (pipe) {
        for (i = 0;i < 1000; i++) {pipe->set("key:i", str_pad(i, 4, '0', 0));
            pipe->get("key:i");
        }
    });

    这段代码一次性设置了1000个键值对,并获取了它们的值。使用管道可以大大减少网络往返次数,提高性能。”

    米小饭: “这太酷了!那事务呢?Redis支持事务吗?”

    步子哥: “当然!Predis为Redis事务提供了一个很好的抽象。你可以这样使用事务:

    responses =client->transaction(function (tx) {tx->set('foo', 'bar');
        tx->get('foo'); });</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> 这段代码在一个事务中设置了一个键值对,然后又获取了这个值。事务保证了这些操作是原子的。" <!-- /wp:paragraph -->  <!-- wp:paragraph --> 米小饭: "太棒了!那如果我想使用Redis的Lua脚本功能呢?" <!-- /wp:paragraph -->  <!-- wp:paragraph --> 步子哥: "Predis对Lua脚本也有很好的支持。你可以直接使用EVAL命令,或者创建一个自定义的脚本命令。看这个例子: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>class ListPushRandomValue extends Predis\Command\ScriptCommand {     public function getKeysCount()     {         return 1;     }      public function getScript()     {         return <<<LUA math.randomseed(ARGV[1]) local rnd = tostring(math.random()) redis.call('lpush', KEYS[1], rnd) return rnd LUA;     } }  // 将脚本命令注入到命令工厂client = new Predis\Client(parameters, [     'commands' => [         'lpushrand' => 'ListPushRandomValue',     ], ]);response = client->lpushrand('random_values',seed = mt_rand());

    这个例子定义了一个自定义的脚本命令,它会生成一个随机数并将其推入一个列表。”

    米小饭: “哇,这太强大了!那如果我的项目需要使用Redis集群呢?”

    步子哥: “Predis也支持Redis集群!你可以使用客户端分片或Redis原生集群。对于Redis原生集群,你可以这样配置:

    parameters = ['tcp://10.0.0.1', 'tcp://10.0.0.2', 'tcp://10.0.0.3'];options    = ['cluster' => 'redis'];
    
    client = new Predis\Client(parameters, options);</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> 这样,Predis就会自动处理集群的节点发现、请求路由等复杂逻辑。" <!-- /wp:paragraph -->  <!-- wp:paragraph --> 米小饭: "太棒了!那主从复制呢?如果我想配置一个主从架构,Predis能支持吗?" <!-- /wp:paragraph -->  <!-- wp:paragraph --> 步子哥: "当然可以!Predis支持主从复制,而且还支持Redis Sentinel。对于简单的主从配置,你可以这样做: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>parameters = ['tcp://10.0.0.1?role=master', 'tcp://10.0.0.2', 'tcp://10.0.0.3'];
    options    = ['replication' => 'predis'];client = new Predis\Client(parameters,options);

    这样,Predis会自动将写操作发送到主节点,读操作发送到从节点。”

    米小饭: “哇,Predis真的考虑得很周到啊!那如果我想使用Redis Sentinel呢?”

    步子哥: “使用Redis Sentinel也很简单。你只需要提供Sentinel的地址,以及服务的名称:

    sentinels = ['tcp://10.0.0.1', 'tcp://10.0.0.2', 'tcp://10.0.0.3'];options   = ['replication' => 'sentinel', 'service' => 'mymaster'];
    
    client = new Predis\Client(sentinels, options);</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> 这样,Predis就会自动通过Sentinel发现主从节点,并处理故障转移等复杂情况。" <!-- /wp:paragraph -->  <!-- wp:paragraph --> 米小饭: "太神奇了!Predis真的是个功能强大的库啊。那如果我想添加一个Redis还不支持的新命令呢?" <!-- /wp:paragraph -->  <!-- wp:paragraph --> 步子哥: "Predis允许你自定义命令。你可以创建一个新的命令类,然后将它注册到Predis的命令工厂中。比如: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>class MyNewCommand extends Predis\Command\Command {     public function getId()     {         return 'MYNEWCMD';     } }client = new Predis\Client(parameters, [     'commands' => [         'mynewcmd' => 'MyNewCommand',     ], ]);response = client->mynewcmd();</code></pre> <!-- /wp:code -->  <!-- wp:paragraph --> 这样你就可以使用自定义的命令了。" <!-- /wp:paragraph -->  <!-- wp:paragraph --> 米小饭: "哇,这太酷了!感觉Predis几乎无所不能啊。那最后再问一个问题,Predis的性能如何?" <!-- /wp:paragraph -->  <!-- wp:paragraph --> 步子哥: "Predis的性能总体来说是很好的。它是纯PHP实现的,所以在某些情况下可能不如C扩展。但是Predis提供了一个很棒的功能 - 可以使用不同的连接后端。比如,你可以使用Relay扩展来获得更好的性能: <!-- /wp:paragraph -->  <!-- wp:code --> <pre class="wp-block-code"><code>client = new Predis\Client('tcp://127.0.0.1', [
        'connections' => 'relay',
    ]);

    使用Relay作为连接后端可以大大提高性能,因为它会在PHP共享运行时内存中缓存部分Redis数据集的副本。”

    米小饭: “太棒了!感觉我已经迫不及待想要在项目中使用Predis了。谢谢你,步子哥,你真是我的救星!”

    步子哥: “不客气,小饭。使用Predis的时候如果遇到任何问题,随时问我。对了,还有一点建议 – 在使用Predis的时候,要记得查看它的文档和示例。Predis的GitHub仓库里有很多有用的信息和示例代码。”

    米小饭: “好的,我一定会好好研究的。那…我能不能请你帮我看看我的代码实现?”

    步子哥: “当然可以啊!你先试着实现一下,有什么不懂的地方我们再一起讨论。记住,编程最好的学习方式就是动手实践。”

    米小饭: “好的!我这就去尝试。真的非常感谢你,步子哥!”

    步子哥: “不用谢,小饭。记住,在软件开发中,遇到问题是很正常的。重要的是要保持学习的热情,勇于尝试新事物。Predis给了我们一个强大的工具来操作Redis,但真正的魔力在于你如何使用它来解决实际问题。去吧,相信你一定能做得很好!”

    米小饭带着满满的信心和知识,开始了她的Redis之旅。她知道,有了Predis这个强大的工具,再加上步子哥的支持,她一定能够出色地完成这个项目。

    这个故事不仅展示了Predis的强大功能,也体现了技术社区中互帮互助的精神。通过步子哥耐心细致的讲解,我们了解了Predis的安装、基本使用、高级特性,以及如何处理各种复杂场景。这个过程也展示了学习新技术的重要性,以及在遇到问题时寻求帮助的价值。

    最后,让我们记住步子哥的建议:在软件开发中,保持学习的热情,勇于尝试新事物,这才是真正的成功之道。无论是使用Predis还是其他工具,重要的是我们如何运用这些工具来解决实际问题,创造价值。让我们一起在编程的世界里继续探索,创造更多精彩的应用吧!

  • AI 科学家:全自动开放式科学发现

    引言:人工智能引领科学发现新纪元

    科学方法是人类文明的基石,其迭代过程推动了无数科学技术突破,改善了人类生活质量。然而,传统的科学研究方法受限于研究人员的知识、经验和时间。人工智能领域的研究者们一直梦想着利用人工智能本身来自动化人工智能研究,从而实现“人工智能生成算法”。近年来,基础模型在通用能力方面取得了巨大进步,但它们仅被用于加速研究流程的个别部分,例如撰写科学论文、头脑风暴或辅助编码。迄今为止,尚未出现完全无需人工干预即可执行整个研究工作的案例。

    人工智能科学家:自动化研究的突破

    本文介绍了首个由前沿大型语言模型(LLM)驱动的端到端论文生成框架——“AI 科学家”。该框架能够在给定广泛的研究方向和简单的初始代码库的情况下,无缝地执行构思、文献检索、实验计划、实验迭代、论文撰写和同行评审,最终生成具有洞察力的论文。

    AI 科学家的工作流程:从构思到论文

    “AI 科学家”的工作流程分为三个主要阶段:(1)构思生成,(2)实验迭代和(3)论文撰写。在撰写完成后,我们引入并验证了一个 LLM 生成的评审流程,以评估生成论文的质量。

    1. 构思生成: “AI 科学家”首先根据提供的模板和其先前的发现档案“头脑风暴”出一系列新颖的研究方向。它利用 LLM 作为变异算子,迭代地生成一个构思档案。每个构思都包含描述、实验执行计划以及(自我评估的)趣味性、新颖性和可行性数值评分。在构思生成后,通过连接语言模型与 Semantic Scholar API 和网络访问工具,过滤掉与现有文献过于相似的构思。
    2. 实验迭代: “AI 科学家”使用最先进的编码助手 Aider 来计划和执行一系列实验。为了提高流程的稳健性,如果实验失败或超时,Aider 会尝试修复代码并重新执行实验,最多尝试四次。在每次实验完成后,Aider 会以实验日志的风格记录结果。然后,它会根据结果重新计划和执行下一个实验。此过程最多重复五次。实验完成后,Aider 会编辑绘图脚本,使用 Python 为论文创建图表。
    3. 论文撰写: “AI 科学家”以标准机器学习会议论文的风格,用 LaTeX 生成一份简洁且信息丰富的进度报告。为了提高流程的稳健性,论文撰写过程分为以下几个步骤:
      • 分节文本生成: Aider 会根据记录的笔记和图表,逐节填写空白的会议论文模板。撰写顺序为引言、背景、方法、实验设置、结果和结论(所有部分除了相关工作)。在撰写的每个步骤中,Aider 都会被提示只使用从代码生成的真实实验结果和真实引用,以减少幻觉。
      • 网络搜索参考文献: 类似于构思生成阶段,“AI 科学家”可以使用 Semantic Scholar API 搜索最相关的文献,并将其与近乎完成的论文进行比较和对比,以完成相关工作部分。
      • 精炼: 在完成前两个阶段后,“AI 科学家”会对论文进行最后的精炼,以删除重复信息并简化论证。
      • 编译: 最后,将填写了所有适当结果的 LaTeX 模板输入 LaTeX 编译器。我们使用 LaTeX linter 并将编译错误反馈给 Aider,以便它可以自动更正任何问题。

    自动化论文评审:评估 AI 科学家的成果

    为了模拟人类科学界的评审过程,我们设计了一个基于 GPT-4o 的代理来进行论文评审,评审标准基于神经信息处理系统(NeurIPS)会议的评审指南。评审代理使用 PyMuPDF 解析库处理 PDF 论文的原始文本。输出包含数值评分(可靠性、表达、贡献、总体、置信度)、优缺点列表以及初步的二元决策(接受或拒绝)。

    案例研究:深入分析 AI 科学家生成的论文

    为了展示“AI 科学家”的能力和局限性,我们选择了一篇名为“自适应双尺度去噪”的论文进行深入分析。这篇论文是由“AI 科学家”在被要求进行扩散模型研究时生成的。

    生成的构思:

    • “AI 科学家”正确地识别了扩散模型研究中一个有趣且动机良好的方向,例如先前的工作已经研究了用于相同目的的改进注意力机制。
    • 它提出了一个全面的实验计划来研究其构思,并成功地实施了所有计划,取得了良好的结果。我们对它如何对早期结果不佳做出反应并迭代地调整其代码(例如,改进权重网络)印象深刻。
    • 虽然论文的构思提高了性能和生成的扩散样本的质量,但其成功的原因可能不像论文中解释的那样。特别是,除了用于分离全局或局部特征的放大层之外,没有明显的归纳偏差。然而,我们确实看到权重在扩散时间步长上的变化(以及因此对全局或局部分支的偏好),这表明发生了一些非平凡的事情。
    • 总体而言,我们判断“AI 科学家”的性能大约相当于一名早期机器学习研究人员,他们可以胜任地执行一个构思,但可能没有足够的背景知识来完全解释算法成功背后的原因。

    生成的实验:

    • “AI 科学家”生成了一份 11 页的科学论文,以标准机器学习会议投稿的风格撰写,包含可视化和所有标准部分。
    • 论文中一些特别令人印象深刻的地方包括:
      • 对算法的精确数学描述。
      • 对实验的全面描述。
      • 良好的实验结果。
      • 新颖的可视化。
      • 有趣的未来工作部分。

    论文的缺陷:

    • 论文中也存在一些缺陷,例如:
      • 缺乏对某些设计选择的合理性说明。
      • 对实验细节的幻觉。
      • 对结果的过度正面解读。
      • 来自实验日志的痕迹。
      • 中间结果的呈现。
      • 参考文献数量不足。

    评审:

    • 自动评审员指出了生成论文中的有效问题。
    • 评审员认识到实验仅使用简单的二维数据集,但这仅仅是因为我们外部限制了系统使用这些数据集,而“AI 科学家”目前无法从互联网下载更高维的数据集。
    • 另一方面,论文中提到了该算法的计算成本增加等局限性,这表明“AI 科学家”通常会坦诚地说明其构思的缺点。
    • 评审员还列出了许多与论文相关的疑问,例如:解释不同数据集之间性能的差异,以及更详细地解释放大过程如何影响局部分支的输入。

    实验:评估 AI 科学家在不同领域的表现

    我们对“AI 科学家”在三个模板(如第 3 节所述)上进行了广泛的评估,使用了不同的公开可用 LLM:Claude Sonnet 3.5、GPT-4o、DeepSeek Coder 和 Llama-3.1 405b。对于每次运行,我们提供 1-2 个基本种子构思作为示例(例如,修改学习率或批大小),并让它生成另外 50 个新构思。

    我们发现,Claude Sonnet 3.5 始终生成质量最高的论文,GPT-4o 位居第二。我们建议查看上传的 Claude 论文以进行定性分析。这一观察结果也得到了 LLM 评审员评分的验证。

    局限性和伦理考量:AI 科学家面临的挑战

    尽管“AI 科学家”可以生成提供新颖见解的研究,但它也存在许多局限性,并引发了一些重要的伦理考量。

    自动评审员的局限性:

    • 尽管自动评审员显示出有希望的初步结果,但仍有几个方面需要改进。
    • 使用的数据集来自 ICLR 2022,其时间足够早,可能出现在基础模型的预训练数据中。
    • 与标准评审员不同,自动评审员无法在反驳阶段向作者提问,尽管这可以很容易地纳入我们的框架。
    • 最后,由于它目前不使用任何视觉功能,“AI 科学家”(包括评审员)无法查看图表,只能依赖于对图表的文本描述。

    常见故障模式:

    • 构思生成过程通常会在不同的运行甚至模型中产生非常相似的构思。
    • Aider 无法实现很大一部分提出的构思。此外,GPT-4o 尤其经常无法编写可编译的 LaTeX。
    • “AI 科学家”可能会错误地实现一个构思,这可能难以察觉。
    • 由于“AI 科学家”每个构思的实验数量有限,因此结果通常达不到标准机器学习会议论文的预期严谨性和深度。
    • 由于我们目前没有使用基础模型的视觉功能,因此它无法修复论文中的视觉问题或读取图表。
    • 在撰写论文时,“AI 科学家”有时难以找到并引用最相关的论文。
    • 重要的是,“AI 科学家”偶尔会在撰写和评估结果时犯下严重错误。
    • 更一般地说,我们不建议将此版本的“AI 科学家”的科学内容视为理所当然。相反,我们建议将生成的论文视为有希望的构思提示,供从业者进一步研究。

    安全代码执行:

    • 当前版本的“AI 科学家”在代码中几乎没有直接的沙盒,如果不对其进行适当的防护,可能会导致一些意外的、有时是不希望的结果。
    • 我们建议在运行“AI 科学家”时进行严格的沙盒,例如容器化、限制互联网访问(Semantic Scholar 除外)以及限制存储使用。

    更广泛的影响和伦理考量:

    • 尽管“AI 科学家”有可能成为研究人员的宝贵工具,但它也存在被滥用的重大风险。
    • 自动生成和向学术场所提交论文的能力可能会大大增加评审员的工作量,从而可能使同行评审过程不堪重负,并损害科学质量控制。
    • 此外,如果自动评审员工具被评审员广泛采用,可能会降低评审质量,并在论文评估中引入不希望的偏差。
    • 因此,我们认为,基本上由人工智能生成的论文或评审必须标记为人工智能生成,以确保完全透明。

    讨论:AI 科学家的未来方向

    本文介绍了“AI 科学家”,这是第一个旨在完全自动化科学发现过程的框架,并将其作为其能力的首次展示,应用于机器学习本身。这个端到端系统利用 LLM 自动生成研究构思、实施和执行实验、搜索相关工作并生成全面的研究论文。通过整合构思、实验和迭代改进阶段,“AI 科学家”旨在以自动化和可扩展的方式复制人类科学过程。

    未来方向:

    • 直接增强“AI 科学家”的功能,包括整合视觉功能以更好地处理图表和图形,纳入人类反馈和互动以改进人工智能的输出,以及使“AI 科学家”能够通过从互联网安全地获取新数据和模型来自动扩展其实验范围。
    • 此外,“AI 科学家”可以跟进其最佳构思,甚至可以以自我参照的方式直接对其自身代码进行研究。事实上,这个项目的很大一部分代码是由 Aider 编写的。
    • 将框架扩展到其他科学领域可以进一步扩大其影响,为自动化科学发现的新时代铺平道路。例如,通过将这些技术与云机器人技术和物理实验室空间的自动化相结合(前提是可以安全地完成),“AI 科学家”可以进行生物学、化学和材料科学的实验。

    结论:AI 科学家开启科学研究新篇章

    “AI 科学家”的引入标志着人工智能在科学研究中充分发挥其潜力的重要一步。通过自动化发现过程并结合人工智能驱动的评审系统,我们为科学技术中最具挑战性的领域的创新和问题解决打开了无限可能的大门。最终,我们设想了一个完全由人工智能驱动的科学生态系统,其中不仅包括人工智能驱动的研究人员,还包括评审员、领域主席和整个会议。然而,我们不认为人类科学家的作用会因此而减弱。我们预计,随着我们适应新技术,科学家的角色将会发生变化,并将在食物链中向上移动。

    参考文献:

    • Chalmers, A. F. (2013). What is this thing called science? Hackett Publishing.
    • Dewey, J. (1910). How we think. D.C. Heath & Co.
    • Jevons, W. S. (1877). The principles of science: A treatise on logic and scientific method. Macmillan and Co.
    • Schmidhuber, J. (1991). Curious model-building control systems. In Proceedings of the International Joint Conference on Neural Networks (pp. 1458-1463).
    • Schmidhuber, J. (2010a). Formal theory of creativity, fun, and intrinsic motivation (1990–2010). IEEE Transactions on Autonomous Mental Development, 2(3), 230-247.
    • Schmidhuber, J. (2010b). Gödel machines: Self-referential universal problem solvers making provably optimal self-improvements. Artificial General Intelligence, 147-198.
    • Schmidhuber, J. (2012). PowerPlay: Training an increasingly general problem solver by continually searching for the simplest still unsolvable problem. Frontiers in psychology, 3.
    • Clune, J. (2019). AI-GAs: AI-generating algorithms, an alternate paradigm for producing general artificial intelligence. arXiv preprint arXiv:1905.10985.
    • Anthropic. (2024). Claude Sonnet 3.5. Retrieved from https://www.anthropic.com/index/claude-sonnet-3-5
    • Google DeepMind Gemini Team. (2023). Gemini. Retrieved from https://www.deepmind.com/blog/gemini-a-next-generation-foundation-model
    • Llama Team. (2024). Llama 3.1 405B. Retrieved from https://ai.meta.com/blog/llama-2-open-foundation-and-fine-tuned-chat-models/
    • OpenAI. (2023). GPT-4 Technical Report. Retrieved from https://arxiv.org/abs/2303.08774
    • Zhu, Y., et al. (2024). DeepSeek Coder. Retrieved from https://github.com/deepseek-ai/DeepSeek-Coder
    • Altmäe, S., et al. (2023). Using large language models to write scientific manuscripts: A case study in cancer research. arXiv preprint arXiv:2308.01449.
    • Girotra, K., et al. (2023). Sparks of artificial general intelligence: Early experiments with GPT-4. arXiv preprint arXiv:2303.12712.
    • Gauthier, J. (2024). Aider: An LLM Powered Coding Assistant. Retrieved from https://github.com/paul-gauthier/aider
    • Merchant, S. R., et al. (2023). GNoME: A generative model for materials exploration. Nature Materials, 22(10), 1052-1059.
    • Pyzer-Knapp, E. O., et al. (2022). Self-driving laboratories for accelerated discovery. Nature Reviews Materials, 7(10), 839-855.
    • Hayes, B. R., et al. (2024). Generative AI for scientific discovery. Nature, 625(7995), 22-29.
    • Jumper, J., et al. (2021). Highly accurate protein structure prediction with AlphaFold. Nature, 596(7873), 583-589.
    • He, X., et al. (2021). AutoML: A survey of the state-of-the-art. arXiv preprint arXiv:2107.00846.
    • Hutter, F., et al. (2019). Automated machine learning: Methods, systems, challenges. Springer Nature.
    • Lu, C., et al. (2022a). Learning to optimize: A primer and a benchmark. arXiv preprint arXiv:2203.12783.
    • Lu, C., et al. (2022b). Preference-based reinforcement learning with large language models. arXiv preprint arXiv:2210.14554.
    • Wan, Y., et al. (2021). NAS-Bench-301: Towards reproducible neural architecture search. arXiv preprint arXiv:2105.04344.
    • Wan, Y., et al. (2022). NAS-Bench-ASR: Reproducible neural architecture search for speech recognition. arXiv preprint arXiv:2203.15011.
    • Faldor, A., et al. (2024). LLM-powered Environment Generation for Open-Ended Learning. arXiv preprint arXiv:2403.05371.
    • Lehman, J., et al. (2022). The surprising creativity of digital evolution: A collection of anecdotes from the evolutionary computation and artificial life research communities. Artificial Life, 28(3), 348-371.
    • Lu, C., et al. (2024a). Discovering State-of-the-Art Algorithms for Preference-Based Reinforcement Learning with Large Language Models. arXiv preprint arXiv:2405.14566.
    • Ma, W., et al. (2023). Reward is enough for convex MDPs. arXiv preprint arXiv:2305.11255.
    • Wei, J., et al. (2022). Chain-of-thought prompting elicits reasoning in large language models. arXiv preprint arXiv:2201.11903.
    • Shinn, N., et al. (2024). Reflexion: Language agents with verbalized episodic memory
人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网
Page Stats: PV: 1 | UV: 1
Last updated: 2025-07-02 01:36:45
沪ICP备2024052574号-1