👋 Welcome to my space

Hi, I'm htj.

FZU · Computer Science Student

Exploring Machine Learning, LLM, Agent and Bioinformatics.

Python Machine Learning LLM Agent Bioinformatics
“无限进步” — Tim

梦开始的地方:我的第一篇blog(软件工程第一次作业)

梦开始的地方:我的第一篇blog

这个作业要求在哪里 软件工程与软件工程实践
这个作业要求在哪里 2026秋软件工程个人作业(第一次)
这个作业的目标 启蒙:通过注册GitHub账号倒推萌新去解决最大的网络问题;通过调用大模型的api_key的方式引导我们使用大模型,完成前端的交互;搭建和完善GitHub主页展示自己,明确自己的短板和现有技术栈;自我评估和明确自己的课程目标帮助老师快速了解你,让ai生成学习指南并分析,培养对ai的结果的批判性思维
学号 102401209

前言:第一次写blog有感

自己对于博客的理解要追溯到初入大学时,刷到小红书上对于计算机个人技术培养有益的几件事。其中提到了搭建自己的技术博客网站记录自己的成长,心有感触,也接触到了一些大佬的个人博客,惊叹于他们细腻的排版和强大的技术底蕴,想搭建自己的blog网站却又迟迟下不了手总觉得麻烦,期间想过在csdn、博客园等平台发表却总觉得缺少那么一点自己的感觉,拖延至今没想到有这样子的一个契机写自己的第一个blog。谢谢您的点击和浏览,能抽空阅读菜鸟手搓的blog,不胜感激

准备工作

Task1:huggingface-API的调用

1.1准备工作

hugging face的注册和获取api_key此处跳过

:由于flux在hugging face上的免费额度只能生成三次图片,不小心用掉了,而网站的最低充值额度为五美元实在充不起,这里采用阿里千问的api_key接入与flux模型相似的阿里的视觉生成模型wanx-v1

刚好阿里云有免费额度:
2e818da7e1a5f936e8eabd113e0b39ef

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

其他有关输出和输入参数的设计这里不过多展示

后端接口调用成功截图:

8707a0883349b98193431a2c298bdc9a

1.3 提示词设计

设计思路:先写一句极简文字来描述照片内容,查看生成的效果是否与现实世界有出入;接下来再用大白话继续补充一些照片细节,让照片更接近现实世界;最后让AI来补充一些专业术语描述照片需求,让模型的生成更加专业真实。

次序 提示词
第一版 一个成年男性在海边散步的图片
第二版 一个成年男性在海边散步的图片,写实人像,环境细节丰富,画面干净。
第三版 一个成年男性在海边散步的图片,写实人像,环境细节丰富,画面干净。真实摄影,35mm 镜头,自然光,肤色自然。电影级构图,暖色调,浅景深,高细节。

修改思路: 第一版的提示词生成的图片整体呈现一种模糊的线条感,生成的人物也不是一个正常的人类,很抽象,不贴近现实世界,更像动画。因此在第二版的提示词加入了写实人像,环境细节丰富,画面干净的提示词,这一次生成的效果明显比上一版更好,人物形象更加立体,背景更加明晰,但其ai味很浓。因此在第三版的提示词中加入了更加专业的描述,并且明确写出真实摄影的要求,生成的效果也是最好的。

  • 第一版生成效果如下:
    19c23595cbf76106f00f8f9feb533d1b

  • 第二版生成效果如下:
    043633067c4bd8847d088afcbeb97bdf

  • 第三版生成效果如下:
    10d2da6b82474a613ca3bdef2e095ba3
    很明显,随着提示词的优化,生成图片的清晰度变高了,人物主体也更加突出,图片整体的氛围感也更和谐
    修改过程:

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账号(点击即可跳转)个人主页内容丰富欢迎浏览!

相关截图如下:
image
image

Task3:刨析自我

3.1 已经具备的的专业知识与能力

  • Java: 学习过一段时间的Java,对Java的基础(类、线程)有一定的了解,但较为浅显。
  • Unity游戏开发: 掌握用C#写游戏脚本,熟练使用unity进行游戏开发。做过一个闯关类小游戏获得计算机设计大赛省二等奖
  • 计算机专业课知识: 目前学习了算法与数据结构、计算机组成原理、计算机网络等专业知识,但大多数是为GPA,没有深度的掌握。
  • 编程语言的基础语法: Python、C++、C、Java
  • 工程工具: Git、Linux命令

3.2 感兴趣的方向

  • Java后端开发Springbootredis、异常处理、多线程并发
  • Agent开发RAGReAct
  • Unity游戏开发:3D游戏开发、联机游戏

3.3 欠缺的能力

  • 缺少大型项目开发的经验,之前仅有一次小型项目开发的经验,对开发规范和文档撰写没有深刻的认识
  • 团队协作能力薄弱,没有多人开发经验
  • Git能力不足,只会使用GitHub desktop进行上传,不会进行冲突的处理

3.4 代码量

  • 目前代码量: 大概为1w行,其中包括C语言的课程习题、C++的算法题、游戏开发的C#代码、Java的基础编程题
  • 希望的代码量:2-3万行,希望通过课程项目的实践提升自己的代码能力,在完成个人、结对、团队项目的基础上提升代码量

3.5 最期待学习到的知识

规范的开发流程:学习阿里巴巴开发规范,掌握软件的开发规范,让自己的代码让别人看懂

Git的管理和版本维护:学会使用git进行文件的上传和管理,学会处理PR时的冲突

团队开发: 能够对开发进行模块化和任务分配,在自己的模块中开发不影响到其他人的模块

Java后端开发:深入学习SpringbootMysqlredis,能够开发出一个app

3.6 软件工程学习指南

注: 本指南使用GPT-5.6sol 生成,指南如下:

核心内容: 软件生命周期、软件过程模型、需求分析、系统设计、编码规范、软件测试、版本控制、项目管理以及团队协作。

学习方法: 理论学习与项目实践结合。学习每个知识点后,尽量通过一个实际项目理解其作用,例如通过需求文档理解需求分析,通过 UML 图理解系统设计,通过 Git 提交记录理解版本管理。

学习顺序: 软件工程基本概念与过程模型 → 需求分析 → 系统设计与 UML 建模 → 编码实现与版本管理 → 软件测试 → 综合项目实践。

实践重点: 在课程项目中完整经历需求、设计、开发、测试和维护过程,同时保留需求文档、设计文档、代码提交记录和测试结果。

常见误区: 只关注程序能否运行而忽略需求和文档;测试留到项目最后;团队开发缺少版本控制;只完成个人模块而不了解整体系统。

建议工具: 使用 Git 和 GitHub/Gitee 进行版本控制,使用 Markdown 编写项目文档,使用 UML 工具完成系统建模,并根据项目需要选择测试工具。

学习目标: 软件工程课程的重点不仅是“把代码写出来”,更重要的是学会以规范、可维护、可协作的方式完成一个完整的软件项目。

合理性: 强调理论于实践结合;注重使用git工具实现版本控制;列出的实践重点也符合软件开发的基本流程,有利于我们对开发进行复盘和迭代;提到了测试的重要性,避免只关注代码实现而忽视软件开发全过程的问题。

存在的不足: 配置管理、工作量估算、风险管理等内容涉及较少,这些内容对软件开发也至关重要;没有明确每部分需要投入多少时间,也没有设置阶段性的练习、作业或成果检查,难以掌握学习进度

对我的帮助:

指南强调了 Git 版本管理、项目文档和团队协作的重要性,对我以后进行团队开发有很大的作用;

意识到良好的代码管理、清晰的文档记录以及规范的开发流程同样影响项目的最终质量,这点对我深有感触,之前在游戏开发中,一个成员和另外一位成员的物品设置冲突可能会导致整个main分支之间崩盘,这就是没有规范的开发流程导致的。

3.7后台博文markdown编辑页面的截图如下:

image

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

posted @ 2026-09-07 22:12  乌萨奇爱coding  阅读(41)  评论(0)    收藏  举报