【大模型】AI平台 joyagent 2.0 的部署与测试

github链接:https://github.com/jd-opensource/joyagent-jdgenie
本篇博客记录下自己在配置joyagent的过程,以【手动初始化环境,启动服务】为例,后端调用的deepseek-chat大模型。

前言

JoyAgent是由京东云开源的企业级多智能体系统,具有以下显著特点:

  1. 开箱即用的轻量级解决方案:JoyAgent无需依赖任何平台,支持本地部署,安装过程简便,通过简单的命令即可完成环境检查和启动服务。
  2. 高效的任务执行能力:在测试中,JoyAgent能够在4-5分钟内完成复杂任务,如美食店推荐和旅行规划,且结果质量高,符合用户需求。
  3. 优秀的交互体验:JoyAgent提供清晰的工作空间界面,支持实时查询和动态生成Markdown文档,并提供多种结果保存方式(Joyspace转换、MD文件下载、复制功能)。
  4. 企业级适用性:JoyAgent在京东内部已有超过2万个智能体应用案例,覆盖零售、物流、金融等多个领域,其GAIA基准测试准确率达70%以上,超越多个同类产品。
  5. 开源生态优势:JoyAgent采用MIT协议,允许商业用途的二次开发,为企业和开发者提供了高度灵活的定制空间。

实际测试使用中,于开发者需明确如下内容:

  1. 部署:可本地化部署
  2. 大模型:建议调用在线大模型,速度快效果好
  3. 功能:该平台主要为智能体的搭建做服务
  4. 二次开发:开源的可完成日常工作的问题解答。若需接入公司系统中,完成指定的公司业务,需要进行二次开发
  5. 开发语言:以java为主、python为辅

1 环境准备:

  • jdk17
    sudo apt update
    sudo apt install openjdk-17-jdk
    # 验证
    java -version   # 应该能看到 openjdk version "17.x"
    
  • python3.11 以及 python环境准备
    conda create -n joy python=3.11 -c conda-forge
    conda activate joy
    pip install uv -i https://pypi.tuna.tsinghua.edu.cn/simplecd genie-tool
    uv sync
    source .venv/bin/activate
    

2 工程配置

2.1 工程下载

 git clone https://github.com/jd-opensource/joyagent-jdgenie.git

2.2 配置文件的修改

【1】文件: joyagent-jdgenie/genie-backend/src/main/resources/application.yml

  • 将下面的第一段内容删掉(注意是删掉),替换成第二段内容。第二段内容是deepseek的相关配置

    llm:default:base_url: '<input llm server here>'apikey: '<input llm key here>'interface_url: '/chat/completions'model: gpt-4.1max_tokens: 16384settings: '{"claude-3-7-sonnet-v1": {"model": "claude-3-7-sonnet-v1","max_tokens": 8192,"temperature": 0,"base_url": "<input llm server here>","apikey": "<input llm key here>","interface_url": "/chat/completions","max_input_tokens": 128000}}'
    
    llm:default:base_url: https://api.deepseek.comapikey: sk-*****model: deepseek-chatmax_tokens: 8192
    
  • 将文件内的 【model_name: gpt-4.1】修改为【model_name: deepseek-chat

【2】文件: joyagent-jdgenie/genie-tool/.env_template
将 .env_template 文件复制一份 命名为 .env,修改 .env中内容

  • 删除
    OPENAI_API_KEY=<your api key>
    OPENAI_BASE_URL=<your base url>
    
  • 补充和修改信息
    DEEPSEEK_API_KEY=sk-***
    DEFAULT_MODEL=deepseek/deepseek-chat
    SERPER_SEARCH_API_KEY=***
    

3 apikey 的获取

3.1 deepseek的apikey

  • deepseek官网 注册并登录账号(支持手机号或微信扫码)。
    登录后进入左侧菜单的「API Keys」页面,点击「创建 API Key」。
    填写名称并立即生成,密钥只显示一次,需妥善保存。在这里插入图片描述
  • 使用的话需要充值,apikey才能真正有效
    在这里插入图片描述
  • 充值结束后,终端测试deepseek大模型是否能正常调通
    curl -s https://api.deepseek.com/v1/chat/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer sk-***" \-d '{"model": "deepseek-chat","messages": [{"role": "user", "content": "你好?"}],"max_tokens": 512,"temperature": 0.7}'
    
    在这里插入图片描述

3.2 serper的apikey

这里前面申请过,然后谷歌邮箱忘记了,所以就先简单记录,后续有机会再详细补充

  • 打开 https://serper.dev。
  • 点击右上角 Sign Up。
  • 使用 Gmail 邮箱填写注册信息并验证。
  • 登录后进入 API Keys 页面创建密钥。

4 工程启动

  1. 依赖与端口的测查
    sh check_dep_port.sh # 检查所有依赖和端口占用情况
    
    该条命令会检查所有依赖和端口占用情况,根据提示直至不报错即可。
    在这里插入图片描述
  • 一键式服务启动
    sh Genie_start.sh  
    
    在这里插入图片描述
  • 在 web中访问 http://localhost:3000,正常情况下会出现如下界面
    在这里插入图片描述
    键入你好,会得到如下内容
    在这里插入图片描述
    询问黄金价格波动影响因素
    在这里插入图片描述

到此,该工程部署完成,且能够正常使用。

5 部署过程中遇到的问题

5.1 一般库的缺失

直接命令安装即可

5.2:启动时的warning

如下warning可以忽略,也可以安装对应的库解决
在这里插入图片描述

npm install esbuild@^0.17.0 prop-types@^15.5.9 --save-dev

5.3 前端不停转圈圈

本人实际场景:vscode远程连接服务器部署与启动,自动端口透传到本地,也就是可以使用本地web界面直接访问前端。

在这里插入图片描述
经过踩坑,确定排查方式如下:

  • 确定服务启动时,每个服务都是被正常拉起。若端口被占用,清除对应的端口的服务,然后重新运行,直至正确
    在这里插入图片描述
  1. 确定端口透传正确,保证不同端的服务在通信时,能够调用正确的端口号。
    在vscode下面终端界面中,点击【PORTS】,保证里面的 【PORT】和【Forwarded Address】的端口号是相同的。
    举个例子。若将这里的【PORT】透传到【localhost:4040】,我们在远程服务器上curl -I http://localhost:3000 是成功的,但在本地就会失败。同时在web界面,localhost:4040 才能正常打开前端界面。
    在这里插入图片描述

5.4 前端一直返回 “失败,请联系管理员”

在这里插入图片描述
当确保上面的异常都排除完后,出现【“任务执行失败,请联系管理员”】,这个时候就要排查 MCP客户端是否能正常被调用。

  • 确定deepseek的apikey是有效的,方法在前面讲述过
  • 配置文件 application.yml 中的 base_url: https://api.deepseek.com
    注意这里不能写成 base_url: https://api.deepseek.com/v1
    本人在这里也踩了坑,后面通过日志打印,定位到这里了
    llm:default:base_url: https://api.deepseek.comapikey: sk-*****model: deepseek-chatmax_tokens: 8192
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93436.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉(一):nvidia与cuda介绍

背景与意义 计算机视觉 (Computer Vision, CV) 需要对图像和视频进行处理、特征提取和模型训练&#xff0c;计算量巨大。GPU (图形处理单元) 擅长并行计算&#xff0c;非常适合深度学习、卷积操作、矩阵乘法等场景。NVIDIA 作为 GPU 领域的领导者&#xff0c;推出了 CUDA (Comp…

阿里云杭州 AI 产品法务岗位信息分享(2025 年 8 月)

&#xff08;注&#xff1a;本岗位信息已获jobleap.cn授权&#xff0c;可在 CSDN 平台发布&#xff09; 一、基本信息 招聘方&#xff1a;阿里云工作地点&#xff1a;杭州信息收录时间&#xff1a;2025 年 08 月 14 日 二、职位主要职责 为 AI 相关产品全流程提供法务支持&…

医疗智慧大屏系统 - Flask + Vue实现

下面我将实现一个完整的医疗智慧大屏系统&#xff0c;使用Flask作为后端框架&#xff0c;前端使用Vue.js结合ECharts进行医疗数据的可视化展示&#xff0c;文章末尾提交源码下载。 系统设计思路 前端部分&#xff1a; 使用Vue.js构建响应式界面 使用ECharts实现各类医疗数据可…

库制作与原理(下)

库制作与原理 (下) 1. 目标文件 编译和链接这两个步骤&#xff0c;在 Windows 下被我们的 IDE 封装的很完美&#xff0c;我们一般都是一键构建非常方便&#xff0c;但一旦遇到错误的时候呢&#xff0c;尤其是链接相关的错误&#xff0c;很多人就束手无策了。在 Linux 下&#x…

STL 容器

STL是C的核心组成部分&#xff0c;其主要包括了容器、迭代器、算法三大组件。 其中容器负责存储数据&#xff0c;迭代器是容器和算法的桥梁&#xff0c;负责对容器中的元素进行操作。本文重点介绍容器部分内容。 STL主要容器 STL容器根据特性进行分类&#xff0c;可以分为序列式…

微信小程序 拖拽签章

微信小程序 拖拽签章 效果 主要实现的功能点 文件按比例加载图片(宽高设定拖拽范围) 弹层展示印章模板 模板拖拽到文件图片上 实时获取拽拽位置 难点 弹层中的元素如何拖拽到文件图片上 实现历程 版本1.0 以前我们拖拽一个图层到另一个图层上,pc端使用的是mousedown mou…

人工智能加速计算套件

按照甲方要求的技术指标的人工智能加速计算套件1套。每套包含以下内容&#xff1a; 1、显卡 不低于6542Y&#xff1b;容量不低于 48GB GDDR6显存&#xff1b;CUDA核心不低于14080 个 &#xff1b;第四代Tensor Core不低于440 个&#xff1b;单精度性能不低于69.3 TFLOPS&#x…

端到端测试:复杂系统的终极体检术

当你的应用像多米诺骨牌一样牵一发而动全身&#xff0c;如何确保用户一路畅通无阻&#xff1f;一、为什么我们需要端到端测试&#xff1f; 想象一下&#xff1a;你精心开发的电商应用&#xff0c;用户登录顺利&#xff0c;商品浏览流畅&#xff0c;却在最后支付时卡壳——原因是…

Perf使用详解

Perf 工具深度解析 Perf&#xff08;Performance Counters for Linux&#xff09;是 Linux 系统的性能分析工具&#xff0c;基于内核的 perf_event 子系统&#xff0c;通过硬件性能计数器&#xff08;PMC&#xff09;、软件事件和跟踪点&#xff08;tracepoints&#xff09;实现…

Windchill 11 Enumerated Type Customization Utility-枚举类型自定义实用程序

一、Enumerated Type Customization Utility 枚举类型自定义实用程序&#xff0c;可用于添加或编辑枚举类型的值&#xff0c;在Windchill 12.0中可直接在类型和属性管理中编辑&#xff0c;如下图所示&#xff0c;而在Windchill 11.0中只能通过windchill shell启动程序&#xff…

git疑问,暂时记录

有时候把dev本地分支搞乱了,多出几个提交,好像在远程仓库,rebase dev到本地dev,就恢复了,然后再把我开发分支合并过去就ok,就不会多出几个重复的提交 在自己分支开发提交数据后,不push到远程仓库 然后合并到dev分支,推dev分支到远程仓库然后在自己分支,rebase到自己分支,然后再…

Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害预警与应急响应中的应用

Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害预警与应急响应中的应用引言&#xff1a;Java 筑起气象防灾减灾的数字长城正文&#xff1a;Java 构建的气象智慧防御体系一、气象大数据的 Java 基座&#xff1a;从采集到存储的全链路优化1.1 多源异构数据的实时汇聚1.2…

MySQL黑盒子研究工具 strace

strace是什么&#xff1f; 按照 strace 官网的描述, strace 是一个可用于诊断、调试和教学的 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互&#xff0c;比如系统调用、信号传递、进程状态变更等。 strace 底层使用内核的 ptrace 特性来实现其功能。 strace能…

【运维进阶】实施任务控制

实施任务控制 在 Ansible 中&#xff0c;“实施任务控制” 通常指的是对任务执行流程的控制&#xff0c;比如&#xff1a; 条件执行&#xff08;when&#xff09; 循环执行&#xff08;with_items / loop&#xff09; 错误处理&#xff08;block / rescue / ignore_errors&…

Java 中的线程中断详解

Java 中的线程中断1、什么是线程中断2、如何触发线程中断3、如何处理线程中断3.1 线程中断相关的核心方法3.2 处理中断的典型方式3.3 注意事项4、线程中断与线程终止的区别5、线程中断的应用场景5.1 长时间运行任务的取消5.2 阻塞操作的快速响应5.3 服务或线程池的优雅关闭5.4 …

【LeetCode题解】LeetCode 33. 搜索旋转排序数组

【题目链接】 33. 搜索旋转排序数组 【题目描述】 【题解】 对于一个有序数组&#xff0c;我们可以使用二分查找算法来查找某个元素&#xff0c;具体的算法模板可以参考【算法基础课-算法模板1】基础算法中二分查找一节的内容。 然而&#xff0c;在这道题目中&#xff0c;数组…

使用 Serverless 架构快速构建基于 Iceberg 的事务型实时数据湖

文章目录1. 背景介绍2. 架构设计3. 方案实现3.1 CDC3.1.1 自定义插件3.1.2 配置 MSK Connect3.2 实时摄入3.2.1 Glue 实现方案3.2.1.1 在 Glue 中创建 Kafka connection3.2.1.2 Glue Streaming 任务3.2.2 EMS Serverless 实现方案3.3 使用 Athena 查询 Iceberg 表3.3.1 查询3.3…

Java零基础笔记20(Java高级技术:单元测试、反射、注解、动态代理)

1.单元测试2.反射2.1 反射第一步&#xff1a;加载类&#xff0c;获取类的字节码&#xff0c;class对象2.2 获取类中的成分&#xff08;构造器、成员变量、成员方法&#xff09;&#xff0c;并对其进行操作获取构造器的作用&#xff1a;获取成员变量的作用&#xff1a;获取成员…

WinDbg 调试

安装 Windows 调试器 WinDbg 是一种调试器,可用于分析故障转储、调试实时用户模式和内核模式代码,以及检查 CPU 寄存器和内存。 此最新版本具有更新的界面、完全现成的脚本功能、可扩展的调试数据模型、内置的时间旅行调试(TTD)支持和许多其他功能,具有更现代的用户体验。…

topographic terrain

在中文语境中&#xff0c;topographic&#xff08;地形学&#xff09;和 terrain&#xff08;地形&#xff09;这两个词都与地表特征相关&#xff0c;但它们的含义和使用场景有细微差别。以下是它们的区别&#xff1a; 1. 定义Topographic&#xff08;地形学的&#xff09;&…