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

自己动手实现一个简单的Linux AI Agent

大模型带我们来到了自然语言人机交互的时代

在这里插入图片描述

1、安装本地大模型进行推理

下载地址:
https://ollama.com/download
部署本地deepseek

ollama run deepseek-r1:7b

2、制定Linux操作接口指令规范

需要ai推理生成的json格式:

[
    {
        "host": "10.1.1.10",
        "OS": "CentOS7.9",
        "user": "root",
        "ssh_port": 22,
        "command": "df -h"
    }
]

提示词:

有如下json中的主机,请结合用户需求和OS类型给出准确的command命令替换“command”键值:
[
    {
        "host": "10.1.1.10",
        "OS": "CentOS7.9",
        "user": "root",
        "ssh_port": 22,
        "command": "df -h"
    }
]
其他key未说明情况下为默认,请根据用户需求返回json,仅回复json文本。

在page assist中测试提示词
在这里插入图片描述
命令最好是使用提示词都规范下:
在这里插入图片描述

3、编写大模型对话工具

#!/usr/bin/python3
#coding: utf-8

import json
import requests

model = "llama3"

def chat(messages):
    r = requests.post(
        "http://localhost:11434/api/chat",
        json={"model": model, "messages": messages, "stream": True},
    )
    r.raise_for_status()
    output = ""
    for line in r.iter_lines():
        body = json.loads(line)
        if "error" in body:
            raise Exception(body["error"])
        if body.get("done") is False:
            message = body.get("message", "")
            content = message.get("content", "")
            output += content
            print(content, end="", flush=True)
        if body.get("done", False):
            message["content"] = output
            return message

def main():
    messages = []
    while True:
        user_input = input("Enter a prompt: ")
        if not user_input:
            exit()
        print()
        messages.append({"role": "user", "content": user_input})
        message = chat(messages)
        messages.append(message)
        print("\n\n")

if __name__ == "__main__":
    main()

4、运行AI Agent查看效果


未完待续

相关文章:

  • 硬件学习笔记--40 电磁兼容试验-4 快速瞬变脉冲群试验介绍
  • 医院药品管理系统|基于SprinBoot+vue的医院药品管理系统(源码+数据库+文档)
  • CEF132 编译指南 Linux 篇 - Chromium 工具集:depot_tools 安装配置(四)
  • 金蝶云星空与钉钉高效数据集成案例分享
  • 【2025最新计算机毕业设计】基于SpringBoot+Vue高校社团管理系统 【提供源码+答辩PPT+文档+项目部署】
  • 【06】泛型
  • OpenBLAS 在哪些深度学习框架中被使用
  • 【WPSOffice】汇总
  • 11.C语言 malloc() calloc() realloc()分配内存
  • 《全球网络安全政策法律发展研究报告 (2024) 》
  • 归并排序(C# C++)
  • 【分布式文件存储系统Minio】2024.12保姆级教程
  • LinkedList
  • Cherno C++ P55 宏
  • 什么是MVC?什么是SpringMVC?什么是三层架构?
  • 使用 Shiro 和 JPA 结合 MySQL 实现一个简易权限管理系统
  • scratch发射火箭 2024年12月scratch三级真题 中国电子学会 图形化编程 scratch三级真题和答案解析
  • DeepSeek 的开源优势:为什么选择它而不是其他闭源模型?
  • 人工智能 - 大脑神经网络与机器神经网络的区别
  • GitLab CI/CD 的配置详解:从零开始使用 .gitlab-ci.yml 文件
  • 自称“最美”通缉犯出狱当主播?央广网:三观怎能跟着“五官”跑
  • 非法收受财物逾1648万,湖南原副厅级干部康月林一审被判十年半
  • 民生访谈|宝妈宝爸、毕业生、骑手……上海如何为不同人群提供就业保障
  • 伊朗港口爆炸已致40人死亡
  • 凝聚多方力量,中国农科院油菜产业专家团部署单产提升新任务
  • “下山虎”张名扬一回合摘下“狮心”:你们再嘘一个给我听听