llm-reasoners

GitHub
2.3k 203 中等 1 次阅读 2天前Apache-2.0语言模型开发框架Agent
AI 解读 由 AI 自动生成,仅供参考

llm-reasoners 是一个专为提升大语言模型(LLM)复杂推理能力而设计的开源库。它旨在解决模型在处理数学解题、逻辑推导等高难度任务时,因缺乏系统性思考而导致准确率不足的问题。

该工具非常适合 AI 研究人员和开发者使用,尤其是那些希望复现前沿算法或深入分析模型推理过程的团队。llm-reasoners 的核心亮点在于其丰富的算法支持,不仅涵盖了思维链(CoT)、思维树(ToT)等经典方法,还集成了蒙特卡洛树搜索(MCTS)、推理时缩放(Inference-time Scaling)等最新研究成果。为了降低使用门槛,它提供了一行代码即可生成的直观可视化功能,让用户能清晰洞察复杂的推理路径。此外,通过集成高性能推理框架 SGLang 并支持多种后端,llm-reasoners 在确保严格复现论文效果的同时,显著提升了推理效率,是探索和优化大模型推理策略的得力助手。

使用场景

某量化分析团队正利用大模型处理复杂的金融逻辑推理任务,需要从海量非结构化新闻中推导潜在的市场趋势。

没有 llm-reasoners 时

  • 推理深度不足:直接使用基础提示词(Prompt)或简单的思维链(CoT),模型在面对多步逻辑跳转时容易“迷路”,导致结论缺乏严谨性。
  • 黑盒难以调试:当模型得出错误结论时,开发者无法直观看到中间思考路径,像面对黑盒一样难以定位是哪一步逻辑崩塌。
  • 算法复现困难:想要尝试前沿的“思维树(ToT)”或“蒙特卡洛树搜索(MCTS)”等高级策略,需从零编写复杂的搜索与评估代码,耗时且易出错。
  • 推理效率低下:缺乏针对推理过程的底层优化,在处理大批量数据时,单次推理耗时过长,无法满足实时分析需求。

使用 llm-reasoners 后

  • 策略灵活升级:通过一行代码即可切换至 MCTS 或 ToT 等先进算法,让模型具备规划与自我修正能力,显著提升了复杂推导的准确率。
  • 过程透明可视:利用内置的可视化工具,团队能清晰看到模型每一步的搜索树与评分细节,快速诊断并优化薄弱环节。
  • 开箱即用复现:直接调用库中经严格验证的算法实现,无需重复造轮子,确保了实验结果的可复现性与学术严谨性。
  • 高性能加速:集成 SGLang 后端进行结构化生成优化,在保持高推理质量的同时,大幅缩短了大规模任务的执行时间。

llm-reasoners 将原本晦涩难懂的高级推理算法转化为可落地、可观测的工程利器,让大模型真正具备了处理复杂逻辑的“大脑”。

运行环境要求

GPU

未说明(支持多种后端如 SGLang, huggingface transformers, OpenAI API, Exllama, llama.cpp 等,具体取决于所选后端)

内存

未说明

依赖
notes该库是一个框架,支持多种 LLM 后端(包括 SGLang、Hugging Face、OpenAI API、Exllama、llama.cpp 等),因此具体的硬件和软件依赖取决于用户选择的后端。集成了 SGLang 可实现高性能推理。支持可视化调试工具。
python未说明
SGLang
huggingface transformers
OpenAI API
Exllama
fairscale
llama.cpp
BrowserGym
llm-reasoners hero image

快速开始

logo

首页 | 论文(COLM2024) | 博客 | Discord | @Maitrix.org


LLM Reasoners 是一个旨在利用先进算法提升大语言模型复杂推理能力的库。它提供以下功能:

新闻

  • 2025年2月21日:我们已集成Deepseek R1(示例)。同时,请查看我们对R1搜索模式的分析(推文)。

  • 2025年2月6日:我们非常高兴地推出ReasonerAgent——一个完全开源、开箱即用的智能体,它可以在网页浏览器中进行研究并回答您的问题🧐。请查看这篇推文,并在此处探索代码

  • 2025年1月31日:LLM Reasoners已集成SGLang。只需一行代码更改,即可享受100倍的速度提升!此外,还提供了如PRM引导搜索等用于推理时扩展的新应用。更多详情请参见此帖子

  • 2024年12月20日:我们现在已在基于BrowserGym的Web环境中支持规划算法(MCTS、DFS/BFS、束搜索),请查阅README以进行尝试!

(显示更多新闻)
  • 2024年11月13日:我们集成了DRPO,这是一种在EMNLP 2024上发表的无需微调的对齐方法(链接)。

  • 2024年7月10日:我们关于LLM Reasoners的论文已被COLM 2024接收!

  • 2024年6月24日:PromptAgent现已加入LLM Reasoners!它可以帮助您为任务编写超详细的提示词(这里)。

  • 2024年5月14日:请查看Eurus,这是一系列专为推理优化的LLM。借助LLM Reasoners,Eurus-RM可以轻松将Llama-8B在GSM8k上的得分从0.49提升至0.73📈(代码)。

  • 2024年5月2日:我们首次集成了用于科学推理的推理方法StructChem! 欢迎在此处查看(链接)。

  • 2024年4月22日:我们集成了Llama-3,并添加了额外的实用API(例如自定义EOS标记、计算似然度等)。

  • 2024年4月8日:我们介绍LLM Reasoners的新论文现已发布!

  • 2024年3月29日:Grace Decoding已被纳入!

  • 2023年10月25日:关于LLM Reasoners可视化工具的视频教程现已上线。

  • 2023年10月23日:通过规划进行推理的方法已被EMNLP 2023接收!请查看我们的论文,其中包含更新的结果和讨论!

库简介

库结构

我们将LLM推理算法抽象为三个关键组件:奖励函数世界模型搜索算法(详见我们的论文中的公式),分别对应库中的三个类:SearchConfigWorldModelSearchAlgorithm。此外,还有用于驱动其他模块的LLM API、用于评估或调试推理算法的BenchmarkVisualization(中间)。要实现针对特定领域的推理算法(一个Reasoner对象),用户可以继承SearchConfigWorldModel类,并导入一个预实现的SearchAlgorithm。我们还在底部展示了一个使用LLM Reasoners通过RAP解决Blocksworld问题的具体示例。

快速导览

让我们来过一遍针对 Blocksworld 问题的推理代码。请注意,这段代码为了演示目的进行了简化(可在这里找到可运行的笔记本)。

第一步是定义世界模型:你需要在 init_state 中根据问题设置初始状态,在 is_terminal 中判断一个状态是否为终止状态,而最重要的是用 step 定义世界动力学:

from typing import NamedTuple
import utils
from reasoners import WorldModel, LanguageModel
import copy

BWState = str
BWAction = str

class BlocksWorldModel(WorldModel[BWState, BWAction]):
    def __init__(self,
                 base_model: LanguageModel,
                 prompt: dict) -> None:
        super().__init__()
        self.base_model = base_model
        self.prompt = prompt

    def init_state(self) -> BWState:
        # 从给定的问题中提取陈述
        # 例如:“红色方块是干净的,蓝色方块是干净的……”
        return BWState(utils.extract_init_state(self.example)) 

    def step(self, state: BWState, action: BWAction) -> tuple[BWState, dict]:
        # 调用 LLM 预测状态转移
        state = copy.deepcopy(state)
        # 加载 LLM 预测下一个状态的提示
        # 例如:“……我有 <state>, 如果我 <action>, 那么……”
        world_update_prompt = self.prompt["update"].replace("<state>", state).replace("<action>", action)
        world_output = self.base_model.generate([world_update_prompt],
                                    eos_token_id="\n", hide_input=True, temperature=0).text[0].strip()
        new_state = utils.process_new_state(world_output)
        # 到目前为止,我们已经得到了执行动作后的新的状态
        # 接下来的部分是为了加快奖励计算

        # 我们希望检查已满足子目标的比例,并将其作为奖励的一部分
        # 由于我们已经预测了新状态,因此可以在这里方便地进行检查
        goal_reached = utils.goal_check(utils.extract_goals(self.example, new_state))
        # 返回新的状态和附加字典(将传递给奖励函数)
        return new_state, {"goal_reached": goal_reached}

    def is_terminal(self, state: BWState) -> bool:
        # 定义终止状态的条件以停止搜索
        # 例如,所有子目标都已达成
        if utils.goal_check(utils.extract_goals(self.example), state.blocks_state) == 1:
            return True
        return False

然后,我们需要考虑如何搜索最优的推理链。这涉及到在给定状态时使用 get_actions 获取动作空间,以及最重要的作为推理指导的 reward 函数。对于蒙特卡洛树搜索,我们还可以额外定义一个 fast_reward 来加速展开阶段。

import utils
from world_model import BWState, BWAction
from reasoners import SearchConfig, LanguageModel
class BWConfig(SearchConfig):
    def __init__(self,
                 base_model: LanguageModel,
                 prompt: dict,
                 reward_alpha=0.5,
                 goal_reward_default=0.,
                 goal_reached_reward=100) -> None:
        super().__init__()
        self.base_model = base_model
        self.example = None
        self.prompt = prompt
        # 一些用于计算快速奖励或奖励的参数(如下文解释)
        self.reward_alpha = reward_alpha
        self.goal_reward_default = goal_reward_default
        self.goal_reached_reward = goal_reached_reward

    def get_actions(self, state: BWState) -> list[BWAction]:
        # 使用基于规则的函数提取所有合法动作
        return utils.generate_all_actions(state)

    def fast_reward(self, state: BWState, action: BWAction) -> tuple[float, dict]:
        # 构建上下文学习提示(类似于思维链推理中使用的提示)
        inputs = self.prompt["icl"].replace("<init_state>", state)\
            .replace("<goals>", utils.extract_goals(self.example))
        # 将候选动作连接到提示之后,并测试其对数似然
        intuition = self.base_model.get_loglikelihood(inputs, [inputs + action])[0]
        # 奖励是直觉与目标达成度的结合
        # 在快速奖励中,我们跳过目标达成度的计算,直接使用默认值
        fast_reward = intuition * self.reward_alpha + self.goal_reward_default * (1 - self.reward_alpha)
        # 缓存一些信息以便后续奖励计算(将传递到 `reward` 函数)
        details = {'intuition': intuition}
        return fast_reward, details

    def reward(self, state: BWState, action: BWAction,
               intuition: float = None,
               goal_reached: tuple[bool, float] = None) -> float:
        # 注意,`intuition`(在 `fast_reward` 中缓存)和 `goal_reached`(在 `step` 中缓存)会自动作为参数传递给这个奖励函数
        if goal_reached == 1:
            # 如果达到目标状态,我们将给予高额奖励
            goal_reward = self.goal_reached_reward
        else:
            # 否则,根据已满足子目标的比例分配奖励
            goal_reward = goal_reached
        #  Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielvereinbarung.
        Beliebtigkeit ist eine Kombination aus Intuition und Zielverein......## 快速导览
让我们来过一遍针对 Blocksworld 问题的推理代码。请注意,这段代码为了演示目的进行了简化(可在 [这里](demo.ipynb) 查看可运行的笔记本)。

第一步是定义世界模型:你需要在 `init_state` 中根据问题设置初始状态,在 `is_terminal` 中判断一个状态是否为终止状态,而最重要的是用 `step` 定义世界动力学:
```python
from typing import NamedTuple
import utils
from reasoners import WorldModel, LanguageModel
import copy

BWState = str
BWAction = str

class BlocksWorldModel(WorldModel[BWState, BWAction]):
    def __init__(self,
                 base_model: LanguageModel,
                 prompt: dict) -> None:
        super().__init__()
        self.base_model = base_model
        self.prompt = prompt

    def init_state(self) -> BWState:
        # 从给定的问题中提取陈述
        # 例如:“红色方块是干净的,蓝色方块是干净的……”
        return BWState(utils.extract_init_state(self.example)) 

    def step(self, state: BWState, action: BWAction) -> tuple[BWState, dict]:
        # 调用 LLM 预测状态转移
        state = copy.deepcopy(state)
        # 加载 LLM 预测下一个状态的提示
        # 例如:“……我有 <state>, 如果我 <action>, 那么……”
        world_update_prompt = self.prompt["update"].replace("<state>", state).replace("<action>", action)
        world_output = self.base_model.generate([world_update_prompt],
                                    eos_token_id="\n", hide_input=True, temperature=0).text[0].strip()
        new_state = utils.process_new_state(world_output)
        # 到目前为止,我们已经得到了执行动作后的新状态
        # 接下来的部分是为了加快奖励计算

        # 我们想检查已满足的子目标的比例,并将其作为奖励的一部分
        # 由于我们已经预测了新状态,因此可以在这里方便地进行检查
        goal_reached = utils.goal_check(utils.extract_goals(self.example, new_state))
        # 返回新的状态和附加字典(将传递给奖励函数)
        return new_state, {"goal_reached": goal_reached}

    def is_terminal(self, state: BWState) -> bool:
        # 定义终止状态的条件以停止搜索
        # 例如,所有子目标都已达成
        if utils.goal_check(utils.extract_goals(self.example), state.blocks_state) == 1:
            return True
        return False

然后,该考虑如何搜索最优的推理链了。这涉及到 get_actions 来获取给定状态下的动作空间,以及最重要的 reward 作为推理的指导。对于蒙特卡洛树搜索,我们还可以额外定义一个 fast_reward 来加速展开阶段。

import utils
from world_model import BWState, BWAction
from reasoners import SearchConfig, LanguageModel
class BWConfig(SearchConfig):
    def __init__(self,
                 base_model: LanguageModel,
                 prompt: dict,
                 reward_alpha=0.5,
                 goal_reward_default=0.,
                 goal_reached_reward=100) -> None:
        super().__init__()
        self.base_model = base_model
        self.example = None
        self.prompt = prompt
        # 一些用于计算快速奖励或奖励的参数(如下解释)
        self.reward_alpha = reward_alpha
        self.goal_reward_default = goal_reward_default
        self.goal_reached_reward = goal_reached_reward

    def get_actions(self, state: BWState) -> list[BWAction]:
        # 使用基于规则的函数提取所有合法动作
        return utils.generate_all_actions(state)

    def fast_reward(self, state: BWState, action: BWAction) -> tuple[float, dict]:
        # 构建上下文学习提示(类似于思维链推理中使用的提示)
        inputs = self.prompt["icl"].replace("<init_state>", state)\
            .replace("<goals>", utils.extract_goals(self.example))
        # 将候选动作连接到提示之后,并测试其对数似然
        intuition = self.base_model.get_loglikelihood(inputs, [inputs + action])[0]
        # 奖励是直觉与目标达成度的结合
        # 在快速奖励中,我们跳过目标达成度的计算,直接使用默认值
        fast_reward = intuition * self.reward_alpha + self.goal_reward_default * (1 - self.reward_alpha)
        # 缓存一些信息以便稍后计算奖励(将传递到 `reward` 函数)
        details = {'intuition': intuition}
        return fast_reward, details

    def reward(self, state: BWState, action: BWAction,
               intuition: float = None,
               goal_reached: tuple[bool, float] = None) -> float:
        # 注意,`intuition`(在 `fast_reward` 中缓存)和 `goal_reached`(在 `step` 中缓存)会自动作为参数传递给这个奖励函数
        if goal_reached == 1:
            # 如果达到目标状态,我们将给予高额奖励
            goal_reward = self.goal_reached_reward
        else:
            # 否则,根据已满足的子目标比例分配奖励
            goal_reward = goal_reached
        # 奖励是直觉与目标达成度的组合
        reward = intuition * self.reward_alpha + goal_reward * (1 - self.reward_alpha)
        # 返回奖励和附加字典(将在日志中保存以便后续可视化)
        return reward, {'intuition': intuition, 'goal_reached': goal_reached}

现在,我们已经准备好应用推理算法来解决问题了:

from reasoners.algorithm import MCTS
from reasoners.lm import LLaMAModel
from world_model import BlocksWorldModel
from search_config import BWConfig

llama_model = LLaMAModel(llama_ckpts, llama_size, max_batch_size=1)
with open(prompt_path) as f:
    prompt = json.load(f)
world_model = BlocksWorldModel(base_model=base_model, prompt=prompt)
config = BWConfig(base_model=llama_model, prompt=prompt)
# 保存每次迭代的历史以便可视化
search_algo = MCTS(output_trace_in_each_iter=True)
reasoner = Reasoner(world_model=world_model, search_config=config, search_algo=search_algo)
for i, example in enumerate(dataset):
    algo_output = reasoner(example)
    # 将 MCTS 结果保存为 pickle 文件
    with open(os.path.join(log_dir, 'algo_output', f'{resume + i + 1}.pkl'), 'wb') as f:
        pickle.dump(algo_output, f)

最后,我们可以轻松地可视化推理过程:

import pickle
from reasoners.visualization import visualize
with open("logs/bw_MCTS/xxx/algo_output/1.pkl", 'rb') as f:
    mcts_result = pickle.load(f)

from reasoners.visualization.tree_snapshot import NodeData
from reasoners.algorithm.mcts import MCTSNode

# 默认情况下,状态会与节点一起展示,而`SearchConfig.reward`中保存的奖励字典中的奖励则会与边一起展示。
# 我们也可以定义一个辅助函数来自定义可视化工具中显示的内容。
def blocksworld_node_data_factory(n: MCTSNode) -> NodeData:
    return NodeData({"积木状态": n.state.blocks_state if n.state else None,
                     "满足情况": n.fast_reward_details if n.fast_reward_details else "未展开"})
def blocksworld_edge_data_factory(n: MCTSNode) -> EdgeData:
    return EdgeData({"奖励": n.reward, "直觉": n.fast_reward_details["intuition"]})
visualize(mcts_result, node_data_factory=blocksworld_node_data_factory,
                       edge_data_factory=blocksworld_edge_data_factory)

随后会弹出一个可视化结果的URL链接。该图像是交互式的,外观类似于我们在演示网站上展示的示例。

安装

请确保使用 Python 3.10 或更高版本。

conda create -n reasoners python=3.10
conda activate reasoners

通过 pip 安装

pip install llm-reasoners

从 GitHub 安装

(如果您想运行 GitHub 仓库中的示例,推荐此方法)

git clone https://github.com/Ber666/llm-reasoners --recursive
cd llm-reasoners
pip install -e .

添加 --recursive 参数将帮助您自动克隆 exllama 和 LLM-Planning。请注意,其他一些可选模块可能需要额外的依赖项,请根据错误信息进行处理。

引用

本项目是以下论文的扩展:

@inproceedings{hao2023reasoning,
  title={利用语言模型进行推理即为基于世界模型的规划},
  author={Hao, Shibo and Gu, Yi and Ma, Haodi and Hong, Joshua and Wang, Zhen and Wang, Daisy and Hu, Zhiting},
  booktitle={2023年自然语言处理经验方法会议论文集},
  pages={8154--8173},
  year={2023}
}
@article{hao2024llm,
  title={LLM Reasoners:大型语言模型逐步推理的新评估、库及分析},
  author={Hao, Shibo and Gu, Yi and Luo, Haotian and Liu, Tianyang and Shao, Xiyan and Wang, Xinyuan and Xie, Shuhua and Ma, Haodi and Samavedhi, Adithya and Gao, Qiyue and others},
  journal={arXiv 预印本 arXiv:2404.05221},
  year={2024}
}

版本历史

v1.0.02024/05/02

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

159.3k|★★☆☆☆|今天
开发框架Agent语言模型

opencode

OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信

144.3k|★☆☆☆☆|昨天
Agent插件

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|1周前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像