作者:了哥

演示目的

  1. 演示灵码对于整个复杂软件工程项目的架构分析能力,输出项目的软件系统架构图。

  2. 演示文档接口生成能力。

演示准备

  1. 克隆工程地址到本地(需提前安装好 git 工具, 建议本地配置 brew):
git clone https://github.com/duffqiu/bookinfo.git

(为了体现不是模型已有的知识,所以有些更改。)

  1. 安装最新的 VS Code:https://code.visualstudio.com/

  2. 在 VS Code 的插件市场安装最新的灵码插件

备注:也可以直接使用灵码 IDE(https://lingma.aliyun.com/download)

  1. 在 VS Code 的插件市场安装最新的 plantuml 插件(需要配置更新最新的 plantuml 的 jar 包,这个配置自行搜索,这里不做过多介绍)。或者直接使用 plantuml 的 web 页面:https://www.plantuml.com/plantuml/

演示步骤

  1. 在 VS Code 里打开工程的目录

image

  1. 打开灵码,使用 agent 模式,模型选择“qwen3-code”

image

  1. 开始分析工程

输入 prompt

“请详细分析下工程,并用plantuml给出系统架构图的描述”

得到一个分析后的架构描述的 plantuml 文件:

image

  1. 打开文件,然后用 plantuml 插件展示图

image

最后得到一个工程的架构视图:新版的 Qwen3 Coder 模型。

image

  1. 调整架构图,输入 prompt
“请只保留微服务和数据层”

然后得到新的 plantuml 文件,并通过插件展示得到:最新 Qwen3 coder 的模型效果。

image

  1. 再深度分析微服务间的交互

Prompt:

请用plantuml画出各个微服务交互的时序图,输出到文件action.uml

这个时候可能没有分析出 reviews 这个微服务不同的版本的情况,所以再深入和模型交互。

Prompt:

需要增加描述不同的reviews版本的处理过程

最后得到微服务的时序交互图。

image

  1. 分析具体的 API

打开工程里的 java 文件:

image

选择这个文件作为上下文。

image

Prompt:

请给这个文件创建接口文档

这样模型会输出一个类似下面的文档:

REVIEWS_API.md:

# Reviews服务API文档
Reviews服务是Bookinfo应用程序中的一个微服务,用于提供图书评论。它有多个版本(v1、v2、v3),这些版本在评分显示方式上有所不同。
## 基础URL

http://reviews:9080

## 端点
### 1. 健康检查
#### GET `/health`
返回服务的健康状态。
**响应:**
```json
{"status": "Reviews is healthy"
}

响应码:

  • 200 OK - 服务健康

2. 获取图书评论

GET /reviews/{productId}

返回特定产品的评论以及评分(如果启用)。
路径参数:

  • productId (整数) - 要获取评论的产品ID
    请求头:
    该服务传播多个用于分布式追踪的请求头:
  • x-request-id
  • x-b3-traceid
  • x-b3-spanid
  • x-b3-parentspanid
  • x-b3-sampled
  • x-b3-flags
  • 以及其他追踪请求头(Datadog、Lightstep等)
    响应:
{"id": "0","podname": "reviews-v1-7b4f5bd5c-2xk9m","clustername": "cluster-1","reviews": [{"reviewer": "Reviewer1","text": "An extremely entertaining play by Shakespeare. The slapstick humour is refreshing!","rating": {"stars": 5,"color": "black"}},{"reviewer": "Reviewer2","text": "Absolutely fun and entertaining. The play lacks thematic depth when compared to other plays by Shakespeare.","rating": {"stars": 4,"color": "black"}}]
}

说明:

  • 当评分为禁用状态时,响应中将不包含rating对象
  • 当评分服务不可用时,评分对象将包含一个错误:
    "rating": {"error": "Ratings service is currently unavailable"
    }
    
  • 星星的颜色因版本而异:
    • v1: 不显示评分
    • v2: 黑色星星
    • v3: 红色星星
      响应码:
  • 200 OK - 成功获取评论
  • 500 Internal Server Error - 获取评分或其他内部错误

方法说明

1. getJsonResponse方法

功能: 生成图书评论的JSON响应字符串
参数:

  • productId (String) - 产品ID
  • starsReviewer1 (int) - 评论者1的星级评分,-1表示无评分
  • starsReviewer2 (int) - 评论者2的星级评分,-1表示无评分
    返回值:
  • String - 包含评论信息的JSON字符串
    说明:
    此方法根据传入的参数构造JSON格式的响应,包含产品ID、Pod名称、集群名称以及两个预设评论。根据评分是否启用以及评分值是否有效,决定是否在响应中包含评分信息。

2. getRatings方法

功能: 从Ratings服务获取指定产品的评分信息
参数:

  • productId (String) - 产品ID
  • requestHeaders (HttpHeaders) - 来自原始请求的HTTP头信息
    返回值:
  • JsonObject - 包含评分信息的JSON对象,如果出现错误则返回null
    说明:
    此方法使用JAX-RS客户端调用Ratings服务的API。它会传播分布式追踪相关的HTTP头以维持调用链。根据环境变量配置,设置适当的超时时间(黑色星星为10秒,其他为2.5秒)。

3. health方法

功能: 提供健康检查端点
参数:

返回值:

  • Response - 包含健康状态信息的HTTP响应
    说明:
    这是一个简单的健康检查端点,始终返回200状态码和健康状态信息。

4. bookReviewsById方法

功能: 根据产品ID获取图书评论
参数:

  • productId (int) - 产品ID
  • requestHeaders (HttpHeaders) - 来自原始请求的HTTP头信息
    返回值:
  • Response - 包含产品评论的HTTP响应
    说明:
    这是主要的业务方法,负责处理获取图书评论的请求。如果启用了评分功能,它会调用getRatings方法获取评分信息,并使用getJsonResponse方法构造最终的响应。

环境变量

  • ENABLE_RATINGS - 布尔值,用于启用/禁用评分功能
  • STAR_COLOR - 评分星星的颜色(默认:“black”)
  • SERVICES_DOMAIN - 服务发现的域
  • RATINGS_HOSTNAME - 评分服务的主机名(默认:“ratings”)
  • RATINGS_SERVICE_PORT - 评分服务的端口(默认:“9080”)
  • HOSTNAME - Pod主机名
  • CLUSTER_NAME - 集群名称

版本

该服务有三个版本,它们在评分显示上有所不同:

  1. v1 - 返回不带评分的评论
  2. v2 - 返回带黑色星星评分的评论
  3. v3 - 返回带红色星星评分的评论

v3版本实现细节

Reviews v3版本与其他版本共享相同的代码库,但通过环境变量进行配置:

  1. STAR_COLOR 设置为 “red” 以显示红色星星
  2. ENABLE_RATINGS 设置为 “true” 以启用评分显示
  3. SERVICE_VERSION 设置为 “v3”
    在Kubernetes部署配置中,reviews-v3部署使用以下配置:
  • 镜像: docker.io/istio/examples-bookinfo-reviews-v3:1.18.0
  • 环境变量:
    • STAR_COLOR="red"
    • ENABLE_RATINGS="true"
    • LOG_DIR="/tmp/logs"
      v3版本的主要特点是在评论中显示红色星星评分,这通过STAR_COLOR环境变量控制。当ENABLE_RATINGS设置为true时,服务会调用Ratings服务获取评分数据,并在响应中包含评分信息,其中星星颜色由STAR_COLOR环境变量决定。

依赖项

  • 评分服务(启用时)- 用于检索图书评分
  • 各种追踪系统(可选)- 用于分布式追踪

用户可以设置一个自己的模版,然后作为上下文给大模型按照这个模版进行推理。

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

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

相关文章

银河麒麟部署mysql8.0并连接应用

​客户需在国产化银河麒麟系统中部署软件应用,使用mysql8.0数据库。机器放置了两三年,里面命令工具和依赖都不太全。而且客户环境不联网,只能采用离线部署的方式。部署过程中踩了很多坑,也用到很多资源,记录一下。 过…

GitAgent-面壁智能联合清华大学发布的大模型智能体应用框架

本文转载自:https://www.hello123.com/gitagent ** 一、🔍 GitAgent 框架:大模型智能体的工具箱革命 GitAgent 是由面壁智能与清华大学自然语言处理实验室联合研发的创新型框架,旨在解决大模型智能体在复杂任务中的工具扩展瓶颈…

灵码产品演示:Maven 示例工程生成

作者:轻眉 演示主题:由 AI 自动生成 0 到 1 的电商订单 Java 项目 演示目的 面向 Java 零基础的用户,通过灵码的产品能力(如提示词、编码智能体、项目 Rules 和 SQLite MCP 服务、单元测试)自动生成 0 到 1 的电商订单…

AI编程从0-1开发一个小程序

小伙伴们,今天我们利用AI实现从0到1开发一个小程序!需求交给AI: 我们只要说出自己的开发思路,具体需求交给AI完成!输入提示词:个人开发的小程序 能开发哪些好备案,用户喜欢使用的 AI给出…

DDoS高防IP是什么? DDoS攻击会暴露IP吗?

DDoS高防IP是什么?高防IP是指一种网络安全服务,主要用于防御DDoS攻击。随着技术的发展,黑客进行网络攻击的强度也在加大,所以我们要做好网络防护,及时预防DDoS攻击。DDoS高防IP是什么?DDoS高防IP是指基于IP…

k8s事件驱动运维利器 shell operator

Shell-Operator 概述 Shell-Operator 是 Kubernetes 的一个工具,用于通过 shell 脚本扩展集群功能。它允许用户编写简单的脚本(Bash、Python 等)来响应 Kubernetes 事件(如资源变更、定时任务),无需编译复…

(二)文件管理-文件权限-chmod命令的使用

文章目录1. 命令格式2. 基本用法2.1 符号模式2.2 八进制数字模式3. 高级用法3.1 递归操作3.2 参考权限3.3 特殊权限位(Setuid, Setgid, Sticky Bit)3.4 X 特殊执行权限4. 注意事项4.1权限与所有权4.2 Root 权限4.3 安全风险4.4 -R 的风险4.5 目录的执行权限1. 命令格式 chmod …

医院预约挂号脚本

医院预约挂号脚本 功能介绍 本脚本是一个用 Python 编写的医院预约挂号程序,支持以下功能: 自动预约:通过api交互选择医院、科室、医生和时间段。自动监控:持续检查指定医生的号源状态,发现可预约时段时自动尝试预约。…

.NET驾驭Word之力:理解Word对象模型核心 (Application, Document, Range)

在使用MudTools.OfficeInterop.Word库进行Word文档自动化处理时,深入理解Word对象模型的核心组件是至关重要的。Word对象模型提供了一套层次化的结构,使开发者能够通过编程方式控制Word应用程序、文档以及文档内容。本章将详细介绍Word对象模型中最核心的…

Kotlin在医疗大健康域的应用实例探究与编程剖析(上)

一、引言 1.1 研究背景与意义 在当今数字化时代,医疗行业正经历着深刻的变革。随着信息技术的飞速发展,尤其是人工智能、大数据、物联网等新兴技术的广泛应用,医疗行业数字化转型已成为必然趋势。这种转型旨在提升医疗服务的效率和质量,优化医疗资源配置,为患者提供更加…

AI智能体的应用前景

AI智能体的应用前景正从技术探索迈向规模化落地的关键阶段,其发展动力源于大模型能力的突破、行业需求的深化以及商业化模式的创新。以下是基于最新技术动态和行业实践的深度解析: 一、技术突破:从「有脑无手」到「知行合一」 大模型的进化显著提升了智能体的多模态交互与…

高系分四:网络分布式

目录一、我的导图和思考二、大模型对我导图的评价优点可优化之处三、大模型对这章节的建议一、网络知识范畴(一)网络基础理论(二)局域网与广域网(三)网络安全(四)网络性能优化&#…

Day24_【深度学习(1)—概念】

一、AI、ML、DL基本关系 机器学习是实现人工智能的途径,深度学习是机器学习的一种方法。人工智能 (AI)↓ 机器学习 (ML) —— 让机器从数据中学习规律↓ 深度学习 (DL) —— 使用深层神经网络的机器学习方法二、深度学习与机器学习概念深度学习(Deep Lea…

VTK基础(01):VTK中的基本概念

VTK中的基本概念 1.三维场景中的基本要素 三维场景的基本要素包含:灯光、相机、颜色和纹理映射 (1)灯光vtkLight 光的本质是特定频段的电磁波,所以灯光的本质是特定频段(可见光频段)的电磁波发射器;依据发射可见光频段…

LeetCode 2348.全0子数组的数目

给你一个整数数组 nums ,返回全部为 0 的 子数组 数目。 子数组 是一个数组中一段连续非空元素组成的序列。 示例 1: 输入:nums [1,3,0,0,2,0,0,4] 输出:6 解释: 子数组 [0] 出现了 4 次。 子数组 [0,0] 出现了 2 次。…

【wpf】从 DataContext 到依赖属性:WPF 自定义控件 ImageView 的优化之路

从 DataContext 到依赖属性:WPF 自定义控件 ImageView 的优化之路 最近我在做一个 WPF 项目,需要封装一个 ImageView 控件,用来显示图像并处理鼠标交互。 在实际开发中,我遇到了一系列和 数据绑定 有关的问题: 控件需要…

人力资源管理的思维方式学习笔记2

战略人力资源管理的思维方式——北京师范大学政府管理学院——王建民 教授3.1.理念:人力资源是第一战略资源 我们先来了解海尔集团公司实施发展战略的情况。海尔集团创立于1984年,根据官方网站的介绍,目前是一家全球领先的美好生活解决方案服…

汽车网络安全 CyberSecurity ISO/SAE 21434 测试之一

一、什么是网络安全? 在智能网联和自动驾驶技术进入汽车行业之前,功能安全 一直是汽车开发的核心。 简单来说,功能安全的目标是确保车辆的系统在出现故障时,不会对人、环境或者设备造成危害。比如,刹车失灵了&#xff…

力扣(LeetCode) ——217. 存在重复元素(C++)

题目:217. 存在重复元素 示例1: 输入: nums [1,2,3,1] 输出: true 解释: 元素 1 在下标 0 和 3 出现。 示例2: 输入: nums [1,2,3,4] 输出: false 解释: 所有元素都…

Redis 高可用与集群原理

Redis 高可用与集群原理1. 前言 Redis 单机虽然高性能,但一旦节点宕机,数据丢失或服务不可用问题会非常严重。为了解决这一问题,Redis 提供了 主从复制、哨兵(Sentinel)、Cluster 集群 等高可用机制。 这一篇文章我们重…