QQ 群(316628299)一直有关于 GPT 的话题,论坛的讨论比较正式,目前就看到两个帖子
初学可以把它工具当资料补充,事半功倍,但准确性需特别甄别。
附:用 API 部署的网站以及搭建教程:chatgpt-web
注:学生党可以白嫖 Github 学生包(跳转链接),里边有 copilot 和 Azure 云(白嫖额度 100刀/每年)。
API 工具
最近写了个 API 的封装工具:
pip install openai-api-call == 0.2 # python
]dev https://github.com/RexWzh/ChatAPICall.jl # julia
用 API 生成翻译文档
using ChatAPICall
setapikey("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"
showapikey() # 检查密钥
# 读取文件
content = open("README.md", "r") do file
read(file, String)
end
# 初始化对话
chat = Chat()
addsystem!(chat, "你是一个实用的翻译助手")
adduser!(chat, "翻译这段话,保留 Markdown 格式\n" * content)
resp = getresponse!(chat)
open("README_zh-CN.md", "w") do file
write(file, resp.content)
end
生成内容如下,翻译质量还可以
ChatAPICall
OpenAI 的API的简单封装。
用法
设置 API 密钥
using ChatAPICall
setapikey("sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
或者在使用该包时设置 OPENAI_API_KEY
变量以自动加载 API 密钥:
# 将以下代码添加到 ~/.bashrc
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
设置代理 (可选)
using ChatAPICall
# 设置代理 (示例)
proxy_on(http="127.0.0.1:7890", https="socks://127.0.0.1:7891")
# 查看当前代理
proxy_status()
# 关闭代理
proxy_off()
基础使用
示例1:发送消息并返回信息:
using ChatAPICall
# 检查 API 密钥是否设置
showapikey()
# 检查是否开启代理
proxy_status()
# 发送消息并返回响应
chat = Chat("Hello, GPT-3.5!")
resp = getresponse(chat)
示例2:自定义消息模板并返回信息和使用的令牌数:
using ChatAPICall
# 自定义发送模板
function ChatAPICall.defaultprompt(msg)
[
Dict("role"=>"system", "content"=>"帮我翻译这段文字"),
Dict("role"=>"user", "content"=>msg)
]
end
chat = Chat("Hello!")
# 将重试次数设置为 Inf
response = getresponse(chat; temperature=0.5, maxrequests=-1)
println("Number of consumed tokens: ", response.total_tokens)
println("Returned content: ", response.content)
进阶使用
根据上一次的响应继续聊天:
# 第一次呼叫
chat = Chat("Hello, GPT-3.5!")
resp = getresponse!(chat) # 更新聊天记录
println(resp.content)
# 继续聊天
adduser!(chat, "How are you?")
next_resp = getresponse!(chat)
println(next_resp.content)
# 伪造响应
adduser!(chat, "What's your name?")
addassistant!(chat, "My name is GPT-3.5.")
# 打印聊天记录
print(chat)
许可证
本包使用 MIT 许可证。详见 LICENSE 文件。
特点
- 待完成
杂谈
以下个人观点。
优点大家应该都有体会,ChatGPT 的聊天模式,用对话引导解决问题,降低学习门槛,能快速处理常见的代码问题。而且聊天反馈几乎是瞬时的,随叫随到。我以往学 Julia 的经历,遇到错误或不熟悉某个工具,更多是用 Google 英文搜索来筛找解答。现在对话能即刻回复答案,还省去了查阅时间。通过对话,它能不断完善自己的解答,而且还能结合实际处理的问题,直接给代码建议。
缺点主要是生成的质量。目前生成错误率不低,如果不仔细甄别,在工作前期混入 Bug,后期调改会变得更麻烦。
错误例子,图片较长就只贴链接了:
- 如何 Pkg 删除当前环境的所有包
- 错误建议:20230326154259
- 实际可行方案:discourse
- 编写 HTTP 请求
- 错误建议:20230326154658
- 实际方案(纠正两次后):20230326154854