• 作者:老汪软件技巧
  • 发表时间:2024-09-11 04:00
  • 浏览量:

「MarsCoders 开发者说」是 AI 时代下各类技术栈、各种经历的开发者的故事记录,我们捕捉并再现他们在技术洪流中的职场蜕变与角色定位重塑,希望给更多开发者带来启发。同时,该系列也记录了众多豆包MarsCode 用户和 AI 爱好者们的实践案例,各类开发者甚至非研发人员将在此分享其使用豆包MarsCode 的最佳实践,为更多开发者带来 AI 时代使用编程工具的新思路。

本期「MarsCoders 开发者」主角:

听海 , 计算机科学与技术专业,自小学起参加编程小组,学习 Basic 语言、 网页三剑客(Dreamweaver、Fireworks、Flash)、Flash 动画短片制作等。 大学毕业后先后进入互联网公司、创业公司实习就业; 2017年,回到老家入职国企,从程序员变成了“不纯粹”的程序员;2024年,峰回路转,有幸再次被来到程序开发的位置上。

在 AI 时代尝试重新开始写代码,如何快速找到感觉?且听开发者“听海”讲讲他和豆包MarsCode 之间的“协作”故事。

前奏

作为一个做过六年专职开发的伪全栈开发工程师,最近四年阴差阳错的一直活跃在技术之外,像一块补丁一样,哪里缺人补哪里。每当夕阳西下,回忆起过去 Coding 的快乐日子,不仅有些神伤。

峰回路转,上周我这块“补丁”被放在了程序开发的位置上。那种感觉就像是久旱逢甘霖、他乡遇故知、贱妾遇良人。

项目本身不算复杂,简单的说就是获取数据、处理数据、大模型分析数据、传递结果。在弄清需求和打通数据接口之后,我打开了尘封已久的 Visual Studio Code 准备一展身手。

在我新建好 index.js 准备写下第一行代码的时候,脑海中闪现出一个“问题”。过去的项目都是我自己开发自己维护,或者是交给其他前端同事维护,Node.js 是一个很好的选择。但是,现在的项目后续要和后端合作,用 Node.js 怕是不行,难道我要一边查文档一边写 Python 吗?所谓遇事不慌刷会儿朋友圈。

访问链接:/emFi2B 即刻参与活动~

好家伙!赢4090显卡与金条?点开查看才发现原来是一个叫豆包MarsCode 的 AI 编程助手发起的活动。其实以前也经常刷到各种 AI 编程助手,但是因为没有应用场景,一直没有体验。这次豆包MarsCode 的出现可谓是有心栽花花不开,无心插柳柳成荫。

豆包MarsCode 是基于豆包大模型打造的智能开发工具,提供Cloud IDE及AI编程助手两种使用形态。作为豆包代码模型的具体应用,豆包MarsCode 支持智能识别当前编码任务相关的上下文信息,同时将代码理解、生成、优化、推荐、补全、审查等多维能力融为一体,无缝嵌入研发流程的各个环节,帮助开发者提升代码开发质量和效率。

接下来,我们使用集成在 Visual Studio Code 里的 AI 编程助手,体会 AI 辅助编程的快乐吧。

实践

_时隔七年重启编码人生,豆包MarsCode 让我快速回归 | MarsCoders 开发者说_时隔七年重启编码人生,豆包MarsCode 让我快速回归 | MarsCoders 开发者说

前面提到,这个项目主要分为获取数据、处理数据、大模型分析数据、传递结果四个环节,我们尝试从0开始,从一个编程小白的角度来完成这个项目。

考虑到一个 xxx.py 文件实在是简陋,体现不出该项目的高级感,我们首先了解一下项目结构。

其实无论使用什么语言,项目结构都大同小异,不过豆包MarsCode 的提示可以为新人提供更明确的指导。进入实操环节,我们一鼓作气尝试让豆包MarsCode 为我们输出整个代码结构。

我通过通俗的内容描述了我的需求,豆包MarsCode 给出了文字分析,以及代码片段。甚至在定时任务方面,每一个步骤都给出了详细的说明。下面是代码片段的截图:

一眼看去,代码基本符合我的需求,当然也有一些小瑕疵,比如步骤5的 log 在最后环节才统一输出。不过我也反思了下,我的提示词写的也有问题,把对日志的需求列在了序号5,扰乱了 AI 的思路,不过只需要简单的修改就能够解决这些小问题。

接下来我们一起看看豆包MarsCode 处理业务逻辑的能力。我希望它帮我输出一段处理业务数据的代码,具体需求是:

经过尝试,我发现 AI 无法很好地理解什么是“把客服和客户的对话文本以时间线进行还原”,于是我将提示词优化为:

这时,豆包MarsCode 给出了符合需求的代码片段:

import json
import time
import datetime
def process_call_record(record):
    fields = record.split('|')
    if len(fields)!= 8:
        return {}
    customer_statements = fields[2].split(';')
    agent_statements = fields[3].split(';')
    agent_start_times = fields[4].split(';')
    agent_end_times = fields[5].split(';')
    customer_start_times = fields[6].split(';')
    customer_end_times = fields[7].split(';')
    result = []
    for i in range(len(agent_statements)):
        agent_dict = {
            "content": agent_statements[i],
            "start_time": time.strftime("%H:%M:%S", time.localtime(int(agent_start_times[i]))),
            "end_time": time.strftime("%H:%M:%S", time.localtime(int(agent_end_times[i]))),
            "identity": "客服"
        }
        result.append(agent_dict)
    for i in range(len(customer_statements)):
        customer_dict = {
            "content": customer_statements[i],
            "start_time": time.strftime("%H:%M:%S", time.localtime(int(customer_start_times[i]))),
            "end_time": time.strftime("%H:%M:%S", time.localtime(int(customer_end_times[i]))),
            "identity": "客户"
        }
        result.append(customer_dict)
    return sorted(result, key=lambda x: x["start_time"])
with open('your_file.txt', 'r') as file:
    records = file.readlines()
for record in records:
    processed_record = process_call_record(record.strip())
    print(json.dumps(processed_record,ensure_ascii = False, indent=2))

接下来的过程,AI 编程助手把我的角色从程序员变成了提示词小编,只要提示词写的足够好,我们就能得到符合需求的代码。原本编写代码的过程变成了代码填空和优化代码的过程。

除此以外,豆包MarsCode 还具备多个“一键”功能,比如一键生成代码注释,一键生成单元测试等等。豆包MarsCode 对于广大普通程序员而言,相当于是一个贴身编程小助手,一定程度上提升了我们的编程的上限和下限。

结语

豆包MarsCode 的 AI 编程助手让我想起一些低代码产品以及早些年那些通过“拖拉拽”构建 H5 页面的产品。那时候很多程序员会说,我们通过手写代码的方式完成页面开发,效率不比“拖拉拽”差,甚至质量更好。但其实这些都是工具,赋予工具价值的是它的使用者。

取长补短,去粗取精,体验过豆包MarsCode 之后,我脑海里只剩下两个字“真香”。