code-ai-review
v1.0.25
Published
## ai 代码智能评审 [阿里云云效+deepseek](https://developer.aliyun.com/special/yunxiao/202502) 1、创建云效组织并获取访问令牌: 访问[个人访问令牌 ](https://account-devops.aliyun.com/settings/personalAccessToken) 创建令牌:pt-CZSUZMflKNAy7gqalvvizN8w_4b819697-dfe4-49c1-bbec-6a81d6f440cb
Readme
ai
ai 代码智能评审
阿里云云效+deepseek 1、创建云效组织并获取访问令牌: 访问个人访问令牌 创建令牌:pt-CZSUZMflKNAy7gqalvvizN8w_4b819697-dfe4-49c1-bbec-6a81d6f440cb
创建百炼APIKey 获取API Key 百炼APIKey: sk-04d22430e0ce4a0d90ba52742c39a7f9
组织IP获取路径 组织IP:67fe0a7ac17260abdf41e6f2
OpenAi(https://platform.openai.com/docs/overview)
为什么要学习OpenAI
- 技术领先与创新前沿
- 丰富的资源与社区
- 搜索AI相关的项目star从高到低:https://github.com/search?q=ai&type=repositories&s=stars&o=desc
- AutoGPT, HiEAgent: https://docs.agpt.co/autogpt/setup/
- GPT-Engineer,自动生成代码:https://github.com/gpt-engineer-org/gpt-engineer
- 搜索gpt相关的项目star从高到低:https://github.com/search?q=gpt&type=repositories&s=stars&o=desc
- ChatGPT-Next-Web, ChatBot#: https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web
- ChatGPT 中文调教指南,https://github.com/PlexPt/awesome-chatgpt-prompts-zh
- openai-translator, Elia i#faff: https://github.com/openai-translator/openai-translator
- Chatbox, ChatBotD: https://github.com/Bin-Huang/chatbox
模型概览
- 多模态大模型: 能够理解和生成自然语言或代码+理解图像+生成图像等
GPT-4是一个大型多模态模型(接受文本或图像辙入并输出文本),它可以比我们以前的任何模型都更准确地解决难题,这得益于它更广泛的通用知识和更高级的推理能力。 GPT-4可在OpenAI API中供付费客户使用。像gpt-3.5-turbo一样,GPT-4针对聊天进行了优化。
- 文本大模型: 能够理解和生成自然语言或代码
GPT-3.5模型能够理解和生成自然语言或代码。在GPT-3.5系列中,性能最强且最具成本效益的模型是gpt-3.5-turbo,它已针对聊天通过Chat Completions API进行了优化,但也适用于传统的完成任务
- 视觉大模型: 能够根据自然语言提示生成和编辑图像的模型。
DALL-E是一个Ai系统,它可以根据自然语言描述创建逼真的图像和艺术作品。DALL-E3目前麦持根据提示创建特定大小的新图像。DALL-E2也支持编辑现有图像,或创建用户提供图像的变体。
- 语音大模型: 1)将文本转换为自然听起来的语音的模型集。2)将音频转换为文本的模型。
TTS是一个将文本转换为自然听起来的语音文本的AI模型。我们提供了两种不同的模型变体,Hts-1优化用于实时文本到语音的用例,tts-1-hd优化用于质量。 Whisper是一个通用的语音识别模型。它训练于一个大型的多样化音频数据集,并且是一个多任务模型,可以执行多语言语音识别以及语音翻译和语言识别。 目前,开源版本的Whisper和 OpenAI API提供的版本之间没有区别。然而,OpenAl提供的API,提供了一个优化的推理过程,这使得通过OpenAl的API运行Whisper比通过其他方式快得多
Embeddings: 是文本的数值表示,可用于衡量两段文本之间的相关性。目前的第二代Embedding模型 text-embedding-ada-002 旨在以更低的成本替代第一代Embedding模型。Embedding对于搜索、聚类、推荐、异常检测和分类任务很有用。
Moderation模型旨在检查内容是否符合OpenAI的使用政策。模型提供分类能力,寻找以下类别的内容:仇恨、威胁/仇恨、自残、性行为、性行为/未成年人、暴力和暴力/图形。 Moderation模型接受任意大小的输入,自动分解成4096个tokc的块。在输入超过32768个token的情况下,会使用截断,在罕见的情況下可能会从moderation检查中遗漏少量token。 每个请求到moderation端点的最终结果显示每个类别的最大值。例如,如果4Ktoken的一个块的类别得分为0.9901,另一个得分为0.1901,结果将在API响应中显示0.9901,因为它更高。 text-moderation-stable 和text-moderation-latest 几乎和最新模型一样有能力,但稍微老一点。最大TOKEN数32768
OpenAI API key和Token
访问OpenAI的服务的方式有两种,第一种是通过ChatGPT页面访问,第二种是通过API访问。 通过API访问时,我们就要关注如何获取使用API key,以及了解大模型的计费单元Token。
OpenAl API key
OpenAIl API key是一个唯一标识符,允许开发人员通过 API访问 OpenAI 的模型。API 密钥用于对 API 的请求进行身份验证并跟踪使用情况。共享 API Key违反OpenAl的使用条款。
在哪可以找到OpenAI API key
要获取 OpenAI API密钥,开发人员需要注册一个 OpenAI帐户。创建帐户后,开发人员可以从 OpenAI 仪表板请求 API密钥』OpenAI提供了多种计划,包括一个免费计划,允许开发人员在有限的访问权限下测试 API。开发人员可以升级到付费计划以获得对 API 的更多访问权限。
User settings
如何使用OpenAI API key 要使用 OpenAI API 密钥,开发人员需要将API集成到他们的应用程序中。OpenAI 提供了多种 SDK和库,可以轻松地将API集成到不同的编程语言中。开发人员可以使用 SDK 向API发送请求并接收响应。响应可用于生成文本、图像和代码。
Token
OpenAI的token可以理解为文本中的词块。在API处理提示之前,输入会被分解成为这些token。这些token并不一定恰好在单词的开始或结束处分割——token可以包含尾部空格甚至子词。以下是一些理解token长度的有用准则:
- 1个token ~ 4个英文字符
- 1个token ~ 3/4个单词
- 100个token ~ 75个单词 或者
- 1-2个句子≥30个token
- 1个段落~ 100个token
- 1,500个单词~2048个token
不同语言中对应的token差异
不同语言中,单词如何被分割成token是不同的。例如,西班牙语中的‘Como estas’(意为你好吗’)包含5个token(对于 10个字符)。 更高的token-to-char比率可能会使非英语语言的API实现成本更高
使用token的最佳实践
如果某个大模型上下文长度为4097个token,这些token在提示和完成之间共享。如果您的提示有4000个token,那么完成最多只能有97个token。 API根据单词在语料库数据中的上下文来处理单词。大模型将提示转换为token列表,处理提示,然后将预测的token转换回我们在响应中看到的单词。对于我们来说可能看起来相同的两个单词,根据它们在文本中的结构,可能会生成不同的token。 了解token有助于更好地设计提示。例如,由于token可以包含尾部空格,因此知道以空格结尾的提示可能会导致输出质量较低是有帮助的。 总的来说,OpenAI的token是文本
supported-countries
- chatgpt
- poe。Poe(全称“开放探索平台”,Platform for Open Exploration)是一款由Quora开发的移动应用程序,于2022年12月推出。该应用程序内置建基于人工智能技术的聊天机器人,可供用户向机器人询问专业知识、食谱、日常生活,甚或要求它创作文章等。集合多种chatbot的平台。
- ChatGPT镜像站合集 Carrot
OpenAI API 代理
由于 QpenAI及 GFW 的双重限制,国内用户无宏访问 OpenAI 的API,现提供代理服务地址供开发者免费 使用。 ⑦ 代理地址:https://api.openai-proxy.com,支持OpenAI官方所有接口。本服务只做代理中转,不会保存任何数据! 直接将官方接口域名 api.openai.com 替换为 api.openai-proxy.com 即可在国内网络环境下直接调用,支持SSE。
- 获取ApiKey
注册 QpenAl账号,获取你的 ApiKey,过程略。 2.澎测试代理服务 把下列命令中的 <your_openai_api_key> 替换为你自己的 api_key
生态
gitee 开发文档
- 获取GITEE_TOKEN: https://gitee.com/personal_access_tokens
gitlab 开发文档
- 获取projectId
- 获取 mrIid 例如https://gitlab.com/your-namespace/your-project/-/merge_requests/12 则mrIid 是12
- 获取 Project access tokens
- Create new merge request thread
单行审查:
- 优点:1.粒度细,可以精准定位问题;2.实现简单,容易并发处理;3.不会受太长代码块影响 token 限制。
- 缺点:1. 缺少上下文信息,AI 容易「误判」或「判断不出」2.同一个问题可能出现在多行,重复提示;3. 无法覆盖逻辑跨行的缺陷(比如 if/else、try/catch 配对错误)。
整块审查模式(chunk-level review)
- 优点
- ✅ 完整上下文: AI 能看到函数结构、import、调用关系
- ✅ 更贴近真实评审: 模拟开发者看 patch 的方式
- ✅ 可以处理复杂改动: 多行修改、重构、上下文变化都能看懂
- ✅ 适合 ChatGPT 这类大模型: 它们擅长理解文本块,不怕 token 大一点
-缺点
- ❌ 粒度粗: 无法精确标注“第几行有问题”(不方便自动生成 inline comment)
- ❌ 响应较慢: 大块 diff 会导致 token 多、速度慢
- ❌ 后处理复杂: 要提取 AI 输出,映射到具体行不容易
- ❌ 容易超过上下文限制: 特别是大型 PR,会超出 token 限额(4k 或 8k)
Function calling 最佳实践
编写清晰且详细的函数名称、参数描述和使用说明
- 明确描述函数的目的、每个参数的含义及其格式,以及输出结果的含义。
- 使用系统提示明确说明每个函数的使用时机(以及不应使用的情况)。通常,应明确指示模型应执行的操作。
- 包含示例和边界情况,特别是用于纠正任何反复出现的错误。(注意:添加示例可能会影响推理模型的性能。)
应用软件工程最佳实践
- 使函数显而易见且直观:遵循“最小惊讶原则”(Principle of Least Astonishment),确保函数的行为符合用户的预期,避免引发混淆或意外行为。
- 使用枚举和对象结构使无效状态无法表示:通过使用枚举类型和对象结构,确保函数的参数和状态在设计时就被限制在有效范围内,减少无效调用的可能性。
- 通过“实习生测试”:从实习生的角度出发,确保函数的定义和使用方式足够清晰,以便没有背景知识的人也能正确使用。
减轻模型负担,尽可能使用代码处理
- 不要让模型去填写你已经知道的参数。例如,如果你已经基于之前的菜单获得了 order_id,就不要让函数带有 order_id 参数;相反,可以设计成无参数的 submit_refund() 函数,然后通过代码直接传入 order_id。
- 将总是按顺序调用的函数合并。例如,如果你总是在调用完 query_location() 后再调用 mark_location(),就把标记的位置逻辑直接合并到 query_location() 函数里。
保持函数数量较少,以提高准确率。
- 在不同函数数量下评估你的性能表现。
- 尽量保证同一时刻可用的函数数量少于20个,不过这只是一个非强制性的建议。
利用 OpenAI 资源。
- 在 Playground 中生成并迭代函数 Schema。
- 考虑通过微调来提高在大量函数或复杂任务中的函数调用准确性。(参考教程)
