梦开始的地方:我的第一篇blog(软件工程第一次作业)
梦开始的地方:我的第一篇blog
| 这个作业要求在哪里 | 软件工程与软件工程实践 |
|---|---|
| 这个作业要求在哪里 | 2026秋软件工程个人作业(第一次) |
| 这个作业的目标 | 启蒙:通过注册GitHub账号倒推萌新去解决最大的网络问题;通过调用大模型的api_key的方式引导我们使用大模型,完成前端的交互;搭建和完善GitHub主页展示自己,明确自己的短板和现有技术栈;自我评估和明确自己的课程目标帮助老师快速了解你,让ai生成学习指南并分析,培养对ai的结果的批判性思维 |
| 学号 | 102401209 |
前言:第一次写blog有感
自己对于博客的理解要追溯到初入大学时,刷到小红书上对于计算机个人技术培养有益的几件事。其中提到了搭建自己的技术博客网站记录自己的成长,心有感触,也接触到了一些大佬的个人博客,惊叹于他们细腻的排版和强大的技术底蕴,想搭建自己的blog网站却又迟迟下不了手总觉得麻烦,期间想过在csdn、博客园等平台发表却总觉得缺少那么一点自己的感觉,拖延至今没想到有这样子的一个契机写自己的第一个blog。谢谢您的点击和浏览,能抽空阅读菜鸟手搓的blog,不胜感激。
准备工作
-
我的GitHub账号(点击即可跳转)欢迎在GitHub上follow me,我会给你点一个回关的,个人主页内容丰富欢迎浏览!
-
我的博客主页(点击即可跳转)欢迎浏览!后续会对博客园的样式进行完善,变得更加符合我的审美
-
已严肃关注老师和两位助教的博客并且加入班级进行实名
Task1:huggingface-API的调用
1.1准备工作
hugging face的注册和获取api_key此处跳过
注:由于flux在hugging face上的免费额度只能生成三次图片,不小心用掉了,而网站的最低充值额度为五美元实在充不起,这里采用阿里千问的api_key接入与flux模型相似的阿里的视觉生成模型wanx-v1
刚好阿里云有免费额度:

1.2核心代码:
本次技术支持由codex的GPT 5.5 high提供
下面展示关键代码部分(注:api_key已经设置环境变量):
配置模型与 API 地址:
import os
# 指定本项目调用的文生图模型
MODEL_ID = "wanx-v1"
# 作业展示时必须隐藏完整密钥,实际运行时从环境变量读取
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY")
# 阿里云百炼 DashScope API 的基础地址
DASHSCOPE_BASE_URL = "https://dashscope.aliyuncs.com/api/v1"
# 通义万相创建文生图任务的接口地址
CREATE_TASK_URL = (
f"{DASHSCOPE_BASE_URL}/services/aigc/text2image/image-synthesis"
)
def get_api_key():
"""读取 API Key;未配置时给出明确提示。"""
if not DASHSCOPE_API_KEY:
raise RuntimeError("未找到 API Key,请设置 DASHSCOPE_API_KEY。")
return DASHSCOPE_API_KEY
向通义万相提交图片生成任务:
import requests
def create_image_task(prompt, negative_prompt, size, style, seed):
"""组织请求参数,调用 API 创建异步文生图任务。"""
# input 保存提示词;反向提示词用于排除不希望出现的内容
input_data = {"prompt": prompt}
if negative_prompt:
input_data["negative_prompt"] = negative_prompt
# parameters 控制生成风格、图片尺寸、数量和随机种子
parameters = {
"style": style,
"size": size,
"n": 1,
}
if seed is not None:
parameters["seed"] = seed
# X-DashScope-Async: enable 表示使用异步方式生成图片
response = requests.post(
CREATE_TASK_URL,
headers={
"Authorization": f"Bearer {get_api_key()}",
"Content-Type": "application/json",
"X-DashScope-Async": "enable",
},
json={
"model": MODEL_ID,
"input": input_data,
"parameters": parameters,
},
timeout=30,
)
# HTTP 状态异常时直接抛出错误,便于前端显示失败原因
response.raise_for_status()
data = response.json()
# 创建成功后,接口返回 task_id,后续需要用它查询结果
task_id = data.get("output", {}).get("task_id")
if not task_id:
raise RuntimeError(f"创建任务失败:{data}")
return task_id
其他有关输出和输入参数的设计这里不过多展示
后端接口调用成功截图:

1.3 提示词设计
设计思路:先写一句极简文字来描述照片内容,查看生成的效果是否与现实世界有出入;接下来再用大白话继续补充一些照片细节,让照片更接近现实世界;最后让AI来补充一些专业术语描述照片需求,让模型的生成更加专业真实。
| 次序 | 提示词 |
|---|---|
| 第一版 | 一个成年男性在海边散步的图片 |
| 第二版 | 一个成年男性在海边散步的图片,写实人像,环境细节丰富,画面干净。 |
| 第三版 | 一个成年男性在海边散步的图片,写实人像,环境细节丰富,画面干净。真实摄影,35mm 镜头,自然光,肤色自然。电影级构图,暖色调,浅景深,高细节。 |
修改思路: 第一版的提示词生成的图片整体呈现一种模糊的线条感,生成的人物也不是一个正常的人类,很抽象,不贴近现实世界,更像动画。因此在第二版的提示词加入了写实人像,环境细节丰富,画面干净的提示词,这一次生成的效果明显比上一版更好,人物形象更加立体,背景更加明晰,但其ai味很浓。因此在第三版的提示词中加入了更加专业的描述,并且明确写出真实摄影的要求,生成的效果也是最好的。
-
第一版生成效果如下:

-
第二版生成效果如下:

-
第三版生成效果如下:

很明显,随着提示词的优化,生成图片的清晰度变高了,人物主体也更加突出,图片整体的氛围感也更和谐
修改过程:
1.3 API调用和提示词修改的体验心得:
- Agent开发:在调用过程中设计前后端交互,培养工程思维,使用api接口来设计这么一个前端界面,也让我联想到能否自己设计一个界面和ai进行对话,或者说我们平时使用的ai软件(豆包,deepseek、千问)是如何开发的。
- 提示词启发:在AI时代,如何合理设计提示词来准确描述你的需求,让AI用更少的token快速精准get到你的要求也是一门学问,提示词的撰写也需要你对需求的精准把握。
- 批判性思维:对AI生成的结果保持批判,AI生成的图片、PPT、程序固然提高了我们的速度,但是从需求角度出发,生成的东西真的能满足你的需求吗?生成的代码你真的能看懂吗?如果代码效果不符合你的预期,你又该怎么向AI重新描述你的需求?正如ChatGPT的每一个对话框最下面的这句温馨提示:“ChatGPT 也可能会犯错。请核查重要信息。” 比如不懂后端的Spring Boot,Redis、多线程的基础知识,只会拿着agent去生成一段程序、一个网站、一个app,不仅能力得不到提升也会被AI剥夺了思考的能力
Task2:Github个人主页搭建
个人主页的搭建方式我选择方式一,因为比较快速和简单(事情太多了,保研压力大)。同时对方案2保持兴趣,方案2比较有个性,以后会尝试在GitHub上找一些好看的个人主页的开源仓库让我对主页更加有趣和美观。
我的GitHub账号(点击即可跳转)个人主页内容丰富欢迎浏览!
相关截图如下:


Task3:刨析自我
3.1 已经具备的的专业知识与能力
- Java: 学习过一段时间的Java,对Java的基础(类、线程)有一定的了解,但较为浅显。
- Unity游戏开发: 掌握用C#写游戏脚本,熟练使用unity进行游戏开发。做过一个闯关类小游戏获得计算机设计大赛省二等奖
- 计算机专业课知识: 目前学习了算法与数据结构、计算机组成原理、计算机网络等专业知识,但大多数是为GPA,没有深度的掌握。
- 编程语言的基础语法: Python、C++、C、Java
- 工程工具: Git、Linux命令
3.2 感兴趣的方向
- Java后端开发:
Springboot、redis、异常处理、多线程并发 - Agent开发:
RAG、ReAct - Unity游戏开发:3D游戏开发、联机游戏
3.3 欠缺的能力
- 缺少大型项目开发的经验,之前仅有一次小型项目开发的经验,对开发规范和文档撰写没有深刻的认识
- 团队协作能力薄弱,没有多人开发经验
- Git能力不足,只会使用GitHub desktop进行上传,不会进行冲突的处理
3.4 代码量
- 目前代码量: 大概为1w行,其中包括C语言的课程习题、C++的算法题、游戏开发的C#代码、Java的基础编程题
- 希望的代码量:2-3万行,希望通过课程项目的实践提升自己的代码能力,在完成个人、结对、团队项目的基础上提升代码量
3.5 最期待学习到的知识
规范的开发流程:学习阿里巴巴开发规范,掌握软件的开发规范,让自己的代码让别人看懂
Git的管理和版本维护:学会使用git进行文件的上传和管理,学会处理PR时的冲突
团队开发: 能够对开发进行模块化和任务分配,在自己的模块中开发不影响到其他人的模块
Java后端开发:深入学习Springboot,Mysql,redis,能够开发出一个app
3.6 软件工程学习指南
注: 本指南使用GPT-5.6sol 生成,指南如下:
核心内容: 软件生命周期、软件过程模型、需求分析、系统设计、编码规范、软件测试、版本控制、项目管理以及团队协作。
学习方法: 理论学习与项目实践结合。学习每个知识点后,尽量通过一个实际项目理解其作用,例如通过需求文档理解需求分析,通过 UML 图理解系统设计,通过 Git 提交记录理解版本管理。
学习顺序: 软件工程基本概念与过程模型 → 需求分析 → 系统设计与 UML 建模 → 编码实现与版本管理 → 软件测试 → 综合项目实践。
实践重点: 在课程项目中完整经历需求、设计、开发、测试和维护过程,同时保留需求文档、设计文档、代码提交记录和测试结果。
常见误区: 只关注程序能否运行而忽略需求和文档;测试留到项目最后;团队开发缺少版本控制;只完成个人模块而不了解整体系统。
建议工具: 使用 Git 和 GitHub/Gitee 进行版本控制,使用 Markdown 编写项目文档,使用 UML 工具完成系统建模,并根据项目需要选择测试工具。
学习目标: 软件工程课程的重点不仅是“把代码写出来”,更重要的是学会以规范、可维护、可协作的方式完成一个完整的软件项目。
合理性: 强调理论于实践结合;注重使用git工具实现版本控制;列出的实践重点也符合软件开发的基本流程,有利于我们对开发进行复盘和迭代;提到了测试的重要性,避免只关注代码实现而忽视软件开发全过程的问题。
存在的不足: 配置管理、工作量估算、风险管理等内容涉及较少,这些内容对软件开发也至关重要;没有明确每部分需要投入多少时间,也没有设置阶段性的练习、作业或成果检查,难以掌握学习进度
对我的帮助:
指南强调了 Git 版本管理、项目文档和团队协作的重要性,对我以后进行团队开发有很大的作用;
意识到良好的代码管理、清晰的文档记录以及规范的开发流程同样影响项目的最终质量,这点对我深有感触,之前在游戏开发中,一个成员和另外一位成员的物品设置冲突可能会导致整个main分支之间崩盘,这就是没有规范的开发流程导致的。
3.7后台博文markdown编辑页面的截图如下:

谢谢您的浏览!感谢您有耐心看完这篇菜鸟的blog,如果您能浏览到这里,不妨休息一下,辛苦您了
浙公网安备 33010602011771号