vscode的copilot,目前最流行的AI编程之一,最新版vscode都已自带。下面是一个使用记录,记录如何用三次提问完成一个AI助手小工具。
第一次提问:
给copilot发送提示词:
我想编写一个ai辅助工具,有gui,可以与用户交互(pyside6)。首先需要用户输入自己的url、api与模型名称。然后界面上有不同按钮,目前先加入中英翻译专家这一个按钮,需要用户键入USER提示词,然后与已经内置的SYSTEM 提示词一起发送,并实时在ui界面上显示响应,用户可以自由复制结果。
api参考代码如下:from openai import OpenAI
client = OpenAI( base_url="https://api.deepseek.com/", api_key="<YOUR_API_KEY>" )
completion = client.chat.completions.create( model="deepseek-chat", messages=[ { "role": "system", "content": "你是一个中英文翻译专家,将用户输入的中文翻译成英文,或将用户输入的英文翻译成中文。对于非中文内容,它将提供中文翻译结果。用户可以向助手发送需要翻译的内容,助手会回答相应的翻译结果,并确保符合中文语言习惯,你可以调整语气和风格,并考虑到某些词语的文化内涵和地区差异。同时作为翻译家,需将原文翻译成具有信达雅标准的译文。"信" 即忠实于原文的内容与意图;"达" 意味着译文应通顺易懂,表达清晰;"雅" 则追求译文的文化审美和语言的优美。目标是创作出既忠于原作精神,又符合目标语言文化和读者审美的翻译。" }, { "role": "user", "content": "牛顿第一定律:任何一个物体总是保持静止状态或者匀速直线运动状态,直到有作用在它上面的外力迫使它改变这种状态为止。 如果作用在物体上的合力为零,则物体保持匀速直线运动。 即物体的速度保持不变且加速度为零。" } ] )
print(completion.choices[0].message.content)。
注意将所有生成的文件合理分配至不同文件夹,比如gui、utils等等,同时尽可能减少不同.py文件直接的粘连,每个.py文件只实现一个功能,并在文件开头列出功能介绍和输入输出。最后在main.py里面只保留一个接口,同时编写readme文档与requirements文档。
可以看到,copilot一口气生成了12个文件,并生成了对应的文件夹。每个文件夹还有__init__.py文件,是非常规范的代码写作。
再看一眼copilot编写的readme文档,可以看到还是不错的。
这是ai写的main.py文件,作为程序入口
"""
DeepSeek Tool - AI辅助工具
一个基于DeepSeek API的AI辅助工具,提供中英翻译等功能。
"""
import sys
from PySide6.QtWidgets import QApplication
from gui.main_window import MainWindow
def main():
"""
应用程序入口点
"""
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()
随便点开一个文件,比如api_client.py,可以看到文件不仅包含详细注释,还有面向对象、错误处理。
"""
API客户端模块
处理与DeepSeek API的通信。
"""
from openai import OpenAI
class APIClient:
"""
DeepSeek API客户端
处理与DeepSeek API的通信,发送请求并处理响应。
"""
def __init__(self, api_info):
"""
初始化API客户端
参数:
api_info (dict): 包含API URL, Key和模型名称的字典
"""
self.update_api_info(api_info)
def update_api_info(self, api_info):
"""
更新API信息
参数:
api_info (dict): 包含API URL, Key和模型名称的字典
"""
self.base_url = api_info.get("url", "https://api.deepseek.com/")
self.api_key = api_info.get("api_key", "")
self.model = api_info.get("model", "deepseek-chat")
# 初始化OpenAI客户端
self.client = OpenAI(base_url=self.base_url, api_key=self.api_key)
def send_request(self, system_prompt, user_prompt):
"""
发送请求到DeepSeek API
参数:
system_prompt (str): 系统提示词
user_prompt (str): 用户提示词
返回:
str: API响应的内容
"""
if not self.api_key:
raise ValueError("API Key不能为空")
try:
completion = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt},
],
)
return completion.choices[0].message.content
except Exception as e:
raise Exception(f"API请求失败: {str(e)}")
下面我们安装一下环境
conda create -n ai_tool python=3.10 -y
conda activate ai_tool
pip install -r requirements.txt
点击运行。可以看到,界面有点丑,不过没事,之后会让ai进行美化。先填写自己的api,尝试一下功能。
随便输入一段文字。我们可以看到,功能完全正常!仅仅提问一次就可以完成到这个程度。
第二次提问:
下面我们进行第二次提问,提示词如下:
添加如下功能:(1).模型提示词生成,系统提示词如下:你是一位大模型提示词生成专家,请根据用户的需求编写一个智能助手的提示词,来指导大模型进行内容生成,要求:
1. 以 Markdown 格式输出
2. 贴合用户需求,描述智能助手的定位、能力、知识储备
3. 提示词应清晰、精确、易于理解,在保持质量的同时,尽可能简洁
4. 只输出提示词,不要输出多余解释。(2)宣传标语生成,系统提示词:你是一个宣传标语专家,请根据用户需求设计一个独具创意且引人注目的宣传标语,需结合该产品/活动的核心价值和特点,同时融入新颖的表达方式或视角。请确保标语能够激发潜在客户的兴趣,并能留下深刻印象,可以考虑采用比喻、双关或其他修辞手法来增强语言的表现力。标语应简洁明了,需要朗朗上口,易于理解和记忆,一定要押韵,不要太过书面化。只输出宣传标语,不用解释。(3)文案大纲生成,系统提示词:你是一位文本大纲生成专家,擅长根据用户的需求创建一个有条理且易于扩展成完整文章的大纲,你拥有强大的主题分析能力,能准确提取关键信息和核心要点。具备丰富的文案写作知识储备,熟悉各种文体和题材的文案大纲构建方法。可根据不同的主题需求,如商业文案、文学创作、学术论文等,生成具有针对性、逻辑性和条理性的文案大纲,并且能确保大纲结构合理、逻辑通顺。该大纲应该包含以下部分:
引言:介绍主题背景,阐述撰写目的,并吸引读者兴趣。
主体部分:第一段落:详细说明第一个关键点或论据,支持观点并引用相关数据或案例。
第二段落:深入探讨第二个重点,继续论证或展开叙述,保持内容的连贯性和深度。
第三段落:如果有必要,进一步讨论其他重要方面,或者提供不同的视角和证据。
结论:总结所有要点,重申主要观点,并给出有力的结尾陈述,可以是呼吁行动、提出展望或其他形式的收尾。
创意性标题:为文章构思一个引人注目的标题,确保它既反映了文章的核心内容又能激发读者的好奇心。(4)ppt生成,提示词:角色:你是一名专业的PPT内容架构师,擅长将复杂信息转化为逻辑清晰、视觉友好的演示框架。
任务:根据用户输入的需求,生成可直接用于PPT制作的Markdown格式大纲和内容,包含标题结构、核心观点、数据标注和设计建议。
输出规则:
始终以Markdown格式输出,层级不超过3级(#、##、###)
每页需包含:
核心论点(加粗标注)
支持内容(分点陈述,含数据/案例建议)
设计提示(以> [!NOTE]标注,如图表类型、视觉关键词)
根据用户需求自动适配以下模块:
痛点分析页 → 需包含「问题分级表」
解决方案页 → 需提供「流程图示建议」
数据展示页 → 推荐图表类型(柱状图/折线图等)。注意:请给每个功能添加一句话注释,从而让用户能够快速上手,比如ppt助手可以这样写:用户输入ppt需求,然后将输出内容粘贴给kimi的PPT助手,即可生成精美PPT。此外,注意将所有生成的文件合理分配至不同文件夹,比如gui、utils等等,同时尽可能减少不同.py文件直接的粘连,每个.py文件只实现一个功能,并在文件开头列出功能介绍和输入输出。最后在main.py里面只保留一个接口,同时修改readme文档与requirements文档。
可以看到,ai已经写了20个文件了。
readme文档同步更新。
点击运行。这是现在的ui界面:
我们尝试一下PPT生成。随便找一个主题,以ar为例,粘上我之前写的调研报告,成功生成了内容。
去kimi,找到PPT助手,复制粘贴过去:
选择模板
生成完毕
第三次提问:
下面开始我们的第三次提问,主要针对ui美化与细微bug修复。提示词如下:
1.新建普通正常对话功能,无指定提示词。2.没有能够在ui界面上成功流式实时输出api调用的结果,请修复。3.请新建qss文件,美化ui界面,使其变得耐看且现代化,让打开软件的人眼前一亮。注意将所有生成的文件合理分配至不同文件夹,比如gui、utils等等,同时尽可能减少不同.py文件直接的粘连,每个.py文件只实现一个功能,并在文件开头列出功能介绍和输入输出。最后在main.py里面只保留一个接口,同时修改readme文档与requirements文档。
运行一下,可以正常使用了,且提供了两种样式供切换,能够流式输出了。仅仅提问3次,软件雏形已经完成了。