Trae体验:使用Trae实现项目中的大模型接口转换

1,326 阅读5分钟

我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:www.trae.ai/?utm_source…

前言

最近在看一些开源项目的时候发现,大部分用到大模型的项目默认使用的都是gpt系列。相对于国内的小伙伴来说,gpt可能存在一些限制,一个可替代的方式是将代码中对gpt模型的调用转换为对国内大模型接口的调用。对于代码熟练的小伙伴来说可能能很快处理好,但刚好最近Trae的windows版本出了,也想去体验一下。所以结合这两个事情,我想做的事是:体验使用trae来实现将代码仓库中的gpt调用转换成对国内大模型接口的调用。本文主要也是记录下这个探索的过程。

准备

模型

我们要替换国内的大模型接口,那么选择哪一个?对于接口的要求,我考虑的是:1. 功能效果比较不错,2. Openai api兼容,方便转换。这里选择qwen系列模型来进行调用。

工具

Trae的windows版本,进入官网获取。

项目

刚好最近又在看一些有意思的开源app,但自己部署又不太想用gpt, 所以就选择其中的一个先做下尝试,项目名:ai_coding_agent_o3-mini(基于新 o3-mini 模型构建的多个智能体个人编码助手)。感兴趣的小伙伴可以自己尝试下~

查看Trae资源占用情况

在使用trae之前我们可以先看下trae的本地资源占用情况。在没有打开任何项目的情况下资源占用情况如下所示,可以看到没有处理仅运行状态下的内存占用还是相对比较高的。

使用Trae进行仓库代码理解

先使用chat助手我们来看看这段代码的大致逻辑是怎样的~,由于代码较少,可以看到trae分析的还是比较详细的。

使用Chat能力实现功能

首先使用chat能力来对源码进行修改,以使功能达成我们的预期。修改过程如下:

由于这里没有在提示词中指定具体的模型,所以这里设置了一个默认值。其实这里有一点问题(参考官网的调用方式进行调用应该是:dashscope.aliyuncs.com/compatible-…

直接使用修改后的代码去运行是不太行的,会报错。运行之后的结果如下:(我们手动调整了一下模型和baseurl)。

我们将这里的错误信息提交给chat,看能否帮助我们成功处理掉。之后就进入了错误处理循环。

到底哪里有问题呢?通过人工检查的方式,我发现其实是对于库的调用方式的问题。修复的代码一直在纠结OpenAIChat这个接口的参数是否适配(但其实整个接口都有问题。一个思路是将code demo嵌入到prompt中,手动加到prompt中测试了一下是可以解决这个问题)。我们对比下项目代码和该库的调用代码可以发现,我们不仅要替换其中参数,还需要替换其中

修改完成之后,项目执行结果如下:(代码可以正常的生成和展示,虽然最后执行失败了,但并不影响。)

最后执行的错误是执行环境的问题(部署沙盒环境失败,最后一步我没有使用Trae去解决了,感觉Trae对于外部知识的融合还是不足的),将代码拷贝到本地建立一个文件,然后用命令打开,则可以看到一个如下效果。是的,到这里我们成功替换了代码中的大模型的api,让它调用qwen来完成了用户功能。

使用Builder能力实现功能

我们可以使用trae的chat能力来直接对项目中的api进行替换,那么我们是否能构建另一个项目/工具,使用它来对其他项目中的openai调用进行替换呢?如果我们要从零构建一个项目,在Trae中我们可以使用Builder能力来完成。如果要完成通用性的替换,有多种情况需要考虑,这里为了简化逻辑,我们只考虑几种情况:

  1. 如果代码中有调用openai的模型(gpt系列),将它替换为调用qwen(后续可以做成配置)
  2. 如果出现前面那种特殊库的情况,我们希望能通过一些使用示例的方式来对提示大模型进行生成。
  3. 希望有一个命令行调用和一个可视化的界面。

看起来界面不错,但用起来就开始出现各种问题。。。。。。

emmm, 经过十几轮的对话之后,依旧卡在仓库代码的选择问题上,没有耐心继续了。。。。。。。最终停留在最后一个错误界面上。

总结

本次其实主要尝试使用trae来解决平时实际遇到的一些问题。从工程角度来说示例仓库并不复杂,对Trae的预期应该是可以比较快速好的解决的。从实际的解决过程来看,trae的chat能力能够利用自己的知识解决部分问题,但是对于外部知识看起来并没有做联网搜索,对于一些引用的外部库的问题并不能比较好的识别和解决(可能需要用户提供外部示例)。trae的builder能力具有其形,但还需要继续改进,尤其是对于自己生成代码中存在问题的解决。还有一些小问题列在文末~

其他问题

指出了问题但是没有解决

只生成框架但没有生成完整代码

生成的README启动命令和实际不一致

项目里就三个文件提示文件过多