ChatGPT照猫画虎
照猫画虎,依葫芦画瓢,是ChatGPT的能力之一,在一个项目的开发过程中,也存在着很多类似的工作,特别是一个项目的架构,有其身体的特点,如果让GPT依据语义提示来生成代码,会和原架构存在着一定的差异,这时,“依葫芦画瓢”就好用了。这时就要先构建好一个“葫芦”,然后让ChatGPT依这个“葫芦”帮我们“画瓢”。
参(葫)照(芦)类:
/// <summary>
/// 人员
/// </summary>
public class RenYuan
{
/// <summary>
/// 编号
/// </summary>
public int BianHao { get; set; }
/// <summary>
/// 名称
/// </summary>
public string MingCheng { get; set; }
/// <summary>
/// 性别
/// </summary>
public bool XingBie { get; set; }
/// <summary>
/// 生日
/// </summary>
[YBDateTime("yyyyMMdd")]
public DateTime ShengRi { get; set; }
public override string ToString()
{
return $"编号:{BianHao},名称:{MingCheng},性别:{XingBie},生日:{ShengRi}";
}
}
Prompt:参照上面类把下面数据生成类租户:编号,名称,类型,状态,创建时间
生成(瓢)结果:
public class ZuHu
{
/// <summary>
/// 编号
/// </summary>
public int BianHao { get; set; }
/// <summary>
/// 名称
/// </summary>
public string MingCheng { get; set; }
/// <summary>
/// 类型
/// </summary>
public int LeiXing { get; set; }
/// <summary>
/// 状态
/// </summary>
public int ZhuangTai { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[YBDateTime("yyyyMMdd")]
public DateTime ChuangJianShiJian { get; set; }
public override string ToString()
{
return $"编号:{BianHao},名称:{MingCheng},类型:{LeiXing},状态:{ZhuangTai},创建时间:{ChuangJianShiJian}";
}
}
其实在“画瓢”过程中,也是可以“添油加醋”的,这样既保证了统一的架构规范,又根据实际生成了了个性化功能。
参照接口&类:
public interface IRenYuanService
{
Task<bool> Add(RenYuan renYuan);
}
/// <summary>
/// 商品Service
/// </summary>
public class RenYuanService : IRenYuanService
{
private readonly IDbConnection _conn;
public RenYuanService(IDbConnection conn)
{
_conn = conn;
}
/// <summary>
/// 添加人员
/// </summary>
/// <param name="renYuan"></param>
/// <returns></returns>
public async Task<bool> Add(RenYuan renYuan)
{
var sql = "insert into RenYuan(MingCheng,XingBie,ShengRi) values(@MingCheng,@XingBie,@ShengRi)";
var result = await _conn.ExecuteAsync(sql, renYuan);
return result > 0;
}
}
Prompt:
参照上面的接口和类生成ZuHu的Service接口和类,另外添加一个逻辑删除的方法,把ZhuangTai改为0
生成结果:
public interface IZuHuService
{
Task<bool> Add(ZuHu zuHu);
Task<bool> Delete(int bianHao);
}
public class ZuHuService : IZuHuService
{
private readonly IDbConnection _conn;
public ZuHuService(IDbConnection conn)
{
_conn = conn;
}
/// <summary>
/// 添加组合
/// </summary>
/// <param name="zuHu"></param>
/// <returns></returns>
public async Task<bool> Add(ZuHu zuHu)
{
var sql = "insert into ZuHu(MingCheng,LeiXing,ZhuangTai,ChuangJianShiJian) values(@MingCheng,@LeiXing,@ZhuangTai,@ChuangJianShiJian)";
var result = await _conn.ExecuteAsync(sql, zuHu);
return result > 0;
}
/// <summary>
/// 逻辑删除组合
/// </summary>
/// <param name="bianHao"></param>
/// <returns></returns>
public async Task<bool> Delete(int bianHao)
{
var sql = "update ZuHu set ZhuangTai=0 where BianHao=@BianHao";
var result = await _conn.ExecuteAsync(sql, new { BianHao = bianHao });
return result > 0;
}
}
我试了一下现有的GitHub Copilot和GitHub Copilot Chat还不能在.cs文件级别的“模仿”,只能在当前上下文中进行,相信,随着时间推移,这种功能会出现在IDE中,让开发人员更丝滑使用GPT带来的好处。
文章来源微信公众号
想要更快更方便的了解相关知识,可以关注微信公众号
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2017-02-16 异常处理语句
2017-02-16 五种跳转的语句
2017-02-16 for循环循环时间