【我的创作纪念日】创作者之路:在代码与分享之间,遇见更好的自己
机缘:为何提笔写下第一行文字?
还记得第一次在 CSDN 发布博文的那天,是某个深夜。当时我正在参与一个基于昇腾 AI 平台的大模型推理优化项目,遇到了算子性能瓶颈的问题。翻遍资料无果后,终于在华为开发者空间的文档中找到了线索——通过自定义 Ascend C 算子实现高效计算。
那一刻,我突然意识到:技术的价值不仅在于解决问题,更在于将经验沉淀下来,照亮他人前行的路。
于是,我鼓起勇气写下第一篇原创文章《华为开发者空间赋能昇腾 AI CANN 算子开发》,详细记录了从环境搭建到算子实现的全过程。没想到这篇文章后来获得了近 30 个点赞、18 次收藏,还有几位开发者私信感谢我说“帮了大忙”。那一刻,我知道——我找到了成为创作者的初心:用文字连接技术与人,让知识流动起来。
从此,无论是实战项目中的踩坑经验、学习笔记的整理,还是对前沿技术(如 RAG、LangGraph、大模型评估)的探索,我都愿意记录下来,与大家交流共进。
收获:每一份反馈都是前行的动力
创作之路并非一帆风顺,但每一次正向反馈都让我倍感温暖。
- 我的文章累计获得了 超过 5000+ 的阅读量,其中单篇最高阅读达 1636,被多次收藏。
- 收到了来自全国各地开发者的 真诚评论与私信交流,有人和我讨论技术细节,有人分享他们的改进方案,甚至有高校学生将我的文章作为课程参考资料。
- 在 AI-AGENT 夏季训练营中,我结识了一批志同道合的技术爱好者,我们一起探讨 LangGraph 的状态机设计、RAG 的动态检索策略,思想碰撞中激发出无数灵感。
- 更令人欣喜的是,我的内容被纳入“华为开发者空间”推荐资源池,成为昇腾生态学习路径的一部分。
这些认可让我明白:哪怕只是微小的技术笔记,只要真实、有用,就能产生价值。
日常:创作,已成为生活的一部分
作为一名 AI 平台研发工程师,工作节奏紧张,项目迭代频繁。但我始终相信:输出是最好的输入。
因此,我养成了“学完即写”的习惯:
- 每当掌握一个新技能(比如 OpenCompass 的评测流程、NPU 上的模型部署),我会第一时间整理成文;
- 周末清晨或通勤路上,是我固定的写作时间;
- 遇到复杂问题时,我会以“如何向别人解释清楚”为目标去梳理逻辑,这反而加速了我对技术本质的理解。
虽然精力有限,但创作早已不是负担,而是一种反思、沉淀与成长的方式。它让我在快节奏的工作中保持深度思考的能力,也让我的技术视野更加开阔。
成就:写得最好的一段代码?
如果说哪段代码最让我自豪,那一定是我在实现 基于 LangGraph 的 Self-RAG Agent 时的核心调度逻辑。这段代码实现了动态决策、实时检索、自校正生成三大能力的有机融合
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, List
import operator
class AgentState(TypedDict):
query: str
retrieved_docs: List[str]
generation: str
should_rerun: bool
steps: Annotated[List[str], operator.add]
def retrieve_node(state: AgentState) -> AgentState:
docs = vectorstore.similarity_search(state["query"])
return {
**state,
"retrieved_docs": docs,
"steps": ["retrieval"]
}
def generate_node(state: AgentState) -> AgentState:
prompt = f"根据以下内容回答问题,若信息不足请说明:\n\n{''.join(doc.page_content for doc in state['retrieved_docs'])}\n\n问题:{state['query']}"
response = llm.invoke(prompt)
return {
**state,
"generation": response.content,
"steps": ["generation"]
}
def decide_rerun_node(state: AgentState) -> str:
# 判断是否需要自校正(模拟逻辑,实际可接入 Self-RAG 判断头)
if "无法确定" in state["generation"] or len(state["retrieved_docs"]) < 2:
return "retrieve"
return "end"
# 构建 LangGraph 流程
workflow = StateGraph(AgentState)
workflow.add_node("retrieve", retrieve_node)
workflow.add_node("generate", generate_node)
workflow.set_entry_point("retrieve")
workflow.add_edge("retrieve", "generate")
workflow.add_conditional_edges(
"generate",
decide_rerun_node,
{
"retrieve": "retrieve",
"end": END
}
)
app = workflow.compile()
💡 这段代码让我第一次真正体会到 Agent 不只是流程串联,而是具备“思考闭环”的智能体。它可以根据生成结果反向驱动检索,实现自我修正,正是 RAG 演进为 Self-RAG 的关键一步。
憧憬:未来想成为什么样的创作者?
展望未来,我希望自己能做到三个“坚持”:
-
坚持深耕 AI 基础设施领域
继续聚焦昇腾 AI、CANN、大模型评估(OpenCompass)、Agent 架构等方向,做国产 AI 生态的建设者与传播者。 -
坚持输出高质量、可复现的技术内容
拒绝“标题党”,每一篇文章都附带完整代码、环境配置和踩坑提示,让读者真正“能跑起来”。 -
坚持连接更多开发者
计划发起“昇腾 AI 实战笔记”系列专栏,联合社区力量共建开源知识库;同时也希望有机会走进高校,与年轻学子分享国产算力平台的技术魅力。
最后,感谢 CSDN 提供这样一个开放、包容的技术舞台,也感谢每一位阅读、点赞、收藏我文章的朋友。
我们素未谋面,却因一行代码、一段文字而产生共鸣——这,就是技术创作最美的样子。
🌱 路虽远,行则将至;事虽难,做则必成。
我还在路上,也愿与你同行。
Tips
更多推荐
所有评论(0)