前言 / Introduction
都说 Cloudflare 是赛博佛祖,是真正推动 serverless 的慈善企业,这句话在Workers AI发布后再次得到了印证,个人搭建 AI 应用、跑 AI 模型从未如此简单过,接下来让我们通过一个简单的实例,亲身搭建一个基于CF Workers AI的 LLM 来看看开发流程究竟有多么低,有多么简单
前期准备 / Preparations
- 一个 Cloudflare 账号
- 一个 Python 开发环境
- 需安装requests库
- 可选装jsonpath
教程 / Tutorial
获取 Cloudflare Workers AI API Token
与其他 API 类似,你需要先获取一个API Token,以便计费和验明身份
进入Cloudflare 控制台,登录你的 Cloudflare 账户,接着点击侧边栏中的AI选项卡,进入Workers AI 主界面,接着依次选择 使用 REST API -> 获取 API 令牌,进入一个新的页面,什么都不用管,直接滑到底,点击继续以显示摘要即可,创建令牌,随后复制生成的令牌并妥善保存
请注意,生成的令牌只会显示这一次,且持有令牌可以直接访问你的 Workers AI 资源,请保存在一个安全的地方
初阶代码
修改模型和Token
返回 “使用 Workers AI REST API” 页面,在下方代码区选择第三个 python,其应该类似下面这样
|
将代码复制,打开准备好的 Python 环境,复制进去,接下来我们需要将模型改为更适合中国宝宝体质的 qwen1.5-7b-chat-awq,在代码中找到output = run("@cf/meta/llama-2-7b-chat-int8", inputs)
将其中的@cf/meta/llama-2-7b-chat-int8修改为@cf/qwen/qwen1.5-7b-chat-awq,接着找到headers = {"Authorization": "Bearer {API_TOKEN}"}
将刚刚生成的 API Token 替换掉{API_TOKEN}即可
让我们试着运行一下程序,此时如果一切正常,程序应该已经可以正常运行并返回相应的结果了
修改Prompt
接下来我们需要修改 system prompt 和问题以做到提问的作用,让我们在程序中找到inputs = [
{ "role": "system", "content": "You are a friendly assistan that helps write stories" },
{ "role": "user", "content": "Write a short story about a llama that goes on a journey to find an orange cloud "}
];
其中的"role": "system", "content":后面的内容对应的是 LLM 中的 system prompt,将其修改为 “你是一位优秀的中文助手” (可以自由发挥,按需求修改)
而"role": "user", "content":后面则是你向 AI 提的问题,这里可以修改为你想说的话,例如 “你好,请介绍一下你自己”
至此,你其实已经完成了一个基础的实例,就是这么简单,接下来我们将实现用户输入和输出优化
进阶代码
实现用户输入
毫无难度的一部分,只需要对 inputs 开刀稍作修改即可,直接展示结果userinput = input("请输入要提的问题:")
inputs = [
{ "role": "system", "content": "你是一位优秀的中文助手" },
{ "role": "user", "content": userinput}
];
output = run("@cf/qwen/qwen1.5-7b-chat-awq", inputs)
此处将原本固定的 prompt 修改为了一个读取用户输入的 userinput,便实现了用户输入的功能
输出优化
如果你留心注意,不难发现现在的输出真是丑的要命,是一个裸返回 json,类似{'result': {'response': '你好!很高兴能为你提供帮助。有什么问题或需要帮助的吗?'}, 'success': True, 'errors': [], 'messages': []}
我们其实只需要response中的内容,要实现剥离 response,我们就需要请出选装的 jsonpath 了,在 output 底下加一行final = jsonpath(output,"$..response")[0]
再将print(output)修改为print(final)即可
这样,你的输出就变成了纯净的 “你好!很高兴能为你提供帮助。有什么问题或需要帮助的吗?”
更进一步?
其实到刚才为止,作为一个一轮对话的 AI 已经相当完善了,但是我们也可以更进一步,实现多轮对话的功能,具体实现过程见代码,这里不多做讲解了
Final Code
|
感谢您的阅读