当前位置: 首页 > backend >正文

本地可执行命令的智能体部署方案

本地可执行命令的智能体部署方案,目标是让大语言模型(LLM)在本地接收自然语言指令,并自动调用系统命令、脚本或应用程序,完成任务自动化。这类系统通常被称为 LLM Agent with Tool Use本地 Agent 实体系统


🧠 一、系统整体架构(LLM+Agent+Command执行)

       ┌────────────┐│ 自然语言输入 │└────┬───────┘▼┌────────────┐│  LLM Agent │  ← 支持 Tool 使用└────┬───────┘▼┌──────────────┐│ 指令解析与规划 │└────┬─────────┘▼┌────────────────────┐│ 系统命令执行 (bash, python, etc.) │└────────────────────┘▼┌────────────┐│ 执行结果反馈 │└────────────┘

🚀 二、部署方案选型

类型模型支持工具管理优点缺点
LangChain + ChatGLM/Qwen + Tool生态成熟,可组合配置复杂
AutoGPT / OpenAgents 本地版任务自动规划占资源多
Custom Agent(FastAPI + Shell)自定义手动定义工具控制强、轻量需自建功能

推荐方案:LangChain + LLM + 本地工具调用 + FastAPI 接口包装


⚙️ 三、核心实现步骤(LangChain 本地智能体)

1. 环境准备

conda create -n agent python=3.10 -y
conda activate agent
pip install langchain openai transformers auto-gptq faiss-cpu
pip install duckduckgo-search # optional web tool

2. 加载本地模型(Qwen/ChatGLM)

from transformers import AutoTokenizer, AutoModelForCausalLMtokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-1_8B-Chat", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-1_8B-Chat", trust_remote_code=True).half().cuda()

封装成 llm = HuggingFacePipeline(...),用于 langchain。


3. 定义可调用工具(如 shell 执行器)

from langchain.tools import Tool
import subprocessdef execute_shell(command: str) -> str:try:return subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT, timeout=10).decode("utf-8")except subprocess.CalledProcessError as e:return f"[Error]: {e.output.decode('utf-8')}"shell_tool = Tool(name="shell", func=execute_shell, description="Execute shell command on local system")

4. 构建 Agent

from langchain.agents import initialize_agent, AgentType
from langchain.agents.agent_toolkits import Tooltools = [shell_tool]  # 你也可以加入 python 执行器、浏览器搜索器等agent = initialize_agent(tools=tools,llm=llm,agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,verbose=True
)# 测试
response = agent.run("列出当前目录下的所有文件,并显示文件大小")
print(response)

5. FastAPI 封装成服务(可被Web调用)

from fastapi import FastAPI
from pydantic import BaseModelapp = FastAPI()class Request(BaseModel):query: str@app.post("/agent")
def run_agent(req: Request):result = agent.run(req.query)return {"result": result}

运行:

uvicorn agent_api:app --host 0.0.0.0 --port 8080

🔐 安全建议

项目建议
命令白名单限制 LLM 只能调用指定命令(避免 rm -rf)
沙盒执行使用 dockerchroot 隔离指令
日志审计记录调用历史
用户认证增加 JWT 或 API Token

📦 推荐工具扩展

  • Python Executor Tool:解释 Python 代码(如计算器、数据分析)
  • 文件系统工具:读写指定目录下的文本、Excel、PDF
  • 网络爬虫 Tool:执行 requests/get 接口(需加认证)
  • 插件系统:仿 OpenAI Function Call 的格式

✅ 示例自然语言任务

- 帮我统计当前目录下的 Python 文件数量
- 运行一个 Python 脚本,并返回输出
- 用 curl 请求一个 API 并展示返回内容
- 列出系统进程中占用内存最多的前5个

如果你需要我生成一个**完整部署项目(含工具定义、模型加载、API服务)**的代码压缩包,我可以立即打包给你。你希望使用哪种模型(如 Qwen-1.8B、ChatGLM2、Baichuan2)?

http://www.xdnf.cn/news/4707.html

相关文章:

  • 【WebRTC-12】CreatePeerConnection究竟创建了什么?
  • 开发函数踩坑记 sum(1) over(partition by stock_code order by trade_date asc)
  • 信息系统项目管理工程师备考计算类真题讲解十五
  • java面试OOM汇总
  • 边缘网关(边缘计算)
  • 云平台的技术方向和总体规划
  • 基于卫星遥感数据进行农作物长势监测原理简述
  • BeeWorks IM:专业安全的企业私有化即时通讯软件
  • Linux——Mysql数据库
  • 数据结构*二叉树
  • 软件测试学习笔记
  • 数据结构 - 9( 位图 布隆过滤器 并查集 LRUCache 6000 字详解 )
  • 数据结构 - 10( B- 树 B+ 树 B* 树 4000 字详解 )
  • 谷云科技iPaaS技术实践:集成平台如何解决库存不准等问题
  • 智能外呼机器人的核心优势
  • 《算法导论(第4版)》阅读笔记:p11-p13
  • 图形渲染+事件处理最终版
  • 含铜废水循环利用体系
  • 【杂谈】Godot 2D游戏窗口设置
  • Nginx +Nginx-http-flv-module 推流拉流
  • JAVA:Spring Boot 集成 Lua 的技术博客
  • 深入理解进程与线程、进程池与线程池:企业级开发实战指南
  • Perspective,数据可视化的超级引擎!
  • 【图片合并PDF】一次性将多个文件夹里的图片批量按文件夹为单位合并PDF,多个文件夹图片合并PDF,基于WPF的实现方案
  • win64下cmake+mingw64编译libhv
  • 基于智能家居项目 RGB彩灯(P9813)
  • MIST:一键解锁 macOS 历史版本,旧系统安装不再难!
  • 小米 MiMo 开源:7B 参数凭什么 “叫板” AI行业巨头?
  • COLT_CMDB_linux_userInfo_20250508.sh修复历史脚本输出指标信息中userName与输出信息不一致问题
  • 学习c语言的链表的概念、操作(另一篇链表的笔记在其他的栏目先看这个)