赛题1 - 蓝河代码转译工具

背景阐述

1.C/C++代码编写的系统大约70%的严重安全漏洞和内存使用不当相关,Rust语言一系列安全特性,可以在编 译阶段发现内存相关安全漏洞,用Rust语言编写更安全的操作系统,已经成为行业趋势

2.国内自主研发的操作系统和自主可控的软件生态都还不成熟,通过代码转译技术,提升开发者对新操作系统 的适配效率,促进国产操作系统软件生态发展成熟

蓝河代码转译工具

赛题鼓励开发者实现工具程序,完成与蓝河系统/应用相关的代码转译。

可选方向有两个:

底层代码转译:底层的 C /C++代码转 Rust 代码工具

应用代码转化:将其它形态的移动应用(App、小程序、H5 应用等) 代码转成蓝河应用代码,也可以是自然语言/图片等形态生成蓝河应用 代码

赛题价值

  1. 加快国产操作系统关键技术建设,从源头保障操作系统内存安全, 促进国产操作系统底层技术发展
  2. 加速国产操作系统生态建设,同时繁荣hapjs开源社区生态

3.希望通过本项赛事,携手开发者为国产操作系统底层技术及生态建 设做出贡献

难易程度

**技术栈:**熟悉C/C++、Rust语言开发或者应用开发(熟悉前端 技术栈以及APP、小程序等应用开发)

**• 可实现:**不论是C转Rust,还是应用代码之间的转换,使用大模 型、正则表达式匹配、自建语法树等技术完成常规代码转换已 经是行业常见方案

**• 上限高:**对于代码数量级大的转译,或者复杂特性的代码转译, 要实现完美代码转译有比较高的实现难度

实现举例

• 用蓝心大模型的转译能力,将在 Linux上可编译执行的多线程系统 调用C代码转译成Rust代码

• 输出的Rust代码功能保持一致,且 采用了Rust的Arc/Mutex机制保证 线程安全,同样在Linux平台上可 编译执行

img

技术支持

**文档:**开发环境搭建,开发示例,测试用例

**• 开发环境:**开发工具(IDE、真机调试器apk)、远程云真机等

**• 培训与答疑:**初赛开始前,提供线上直播、视频教程供参赛者 学习,同时准备参赛者常见问题FAQ文档;初赛开始后,社区 内提供三名技术人员分别对不同 技术方向问题进行答疑和指导

评价标准

img

开始

各位老师好。

我是gdb团队,我是github用户名是watchpoints。

大家都知道,GDB作为调试利器,watchpoints命令能监控每个值变化情况,因此我给团队起名gdb,

希望

我从三部分 介绍 代码转译工具实现过程

  1. 从现有系统设计中 抽象出来规则很重要

  2. 如何让大模型识别这些规则

  3. 尝试不同的规则和模型

第一部分:从现有系统设计中 抽象出来规则很重要

如果从0写一个cpptorust工具这我不清楚怎么实现,我重写学习时间来不及

但是我对sql数据库比较了解,我利用已经熟悉知识

目前比较流行数据mysql tidb,OB依然采用同样方式通过文本方式解析一个sql

执行一个SQL语句的流程,大致可以分为解析、编译、优化、执行、返回结果

流程图如下:

用到相关技术:

  • Lex 词法分析器
  • yacc 语法分析器

类似代码:

image.png

最关键一下 每个命令都是规则解析出来。我需要整理这些规则,然后告诉大模型.

最关键一下 每个命令都是规则解析出来。我需要整理这些规则,然后告诉大模型. 这个后面整个思路

第二部分: 如何让大模型识别这些规则

  • 使用 Markdown json,xml prompt

  • GPT-4 (最佳) 或者 Claude.

langGPT

image.png

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Role:指定角色会让 GPT 聚焦在对应领域进行信息输出

## profile:当前提示词的相关信息
- author:作者
- version:版本
- language:语言
- description:描述

## Background:你希望 GPT 了解的背景信息

## Goals:描述 Prompt 的处理流程

## Constrains:描述限制条件,其实是不在帮 GPT 进行剪枝,减少不必要分支的计算

## skills:描述技能项,强化对应领域的信息权重

## workflows:希望 Prompt 按什么方式来对话和输出

## Examples:供 GPT 学习参考的示例

# Initialization:冷启动时的对白,也是个需注意的机会
作为[role],在[Background]背景下,严格遵守 [constrains]以[workflow]的顺序和用户对话

解读模板

参数 解读
Role 给 ChatGPT 指定某个领域专家角色,从而让 ChatGPT 更加聚焦在该领域内的回答
profile 对当前提示词的信息描述,包含作者、迭代版本、语言、描述等,方便记录相关信息
Background 将当前的背景信息详细描述给 GPT,让 GPT 根据信息做出更好的回答
Goals 明确定义 ChatGPT 应该如何处理,详细列出了整体流程,从而让 GPT 更加聚焦问题
Constrains 本质上就是输出规则,写明对 GPT 回答的要求包含形式、语气、专业程度等等
skills 加强 GPT 对领域内技能的权重,领域专家在领域内也存在最擅长的事,你可以增加对应细分领域的权重从而获得更好的回答
workflows 与 ChatGPT 交流的方式,怎么样接受信息,使用什么样的方法进行内容输出,是否需要额外增加什么信息
Examples 你提供给 ChatGPT 的案例,辅助 ChatGPT 更好的生成结果
Initialization 可以按照模板里面的固定语,基本不需要调整