学生作业帮,包含文心一言应用,GPTs,以及相关插件服务
- 回答问题会结合网络搜索的答案(具有实时性和符合标准答案),引导用户自己得出正确答案。
- 必要时能够通过画图引导用户如何构思和解题。
- 必要时会用代码解释器对一些数值问题进行计算。
GPTs:https://chat.openai.com/g/g-rnQtJ1XIv-da-xue-sheng-zuo-ye-bang
文心一言项目链接:https://aistudio.baidu.com/projectdetail/7149326
文心一言应用连接:https://aistudio.baidu.com/application/detail/10832
通义千问项目链接:https://modelscope.cn/studios/MarleneJiang/homeworkhelper
- 什么是GPTs
- 如何快速创建GPTs引导词
- 如何对接自定义API
- GPTs是OpenAI推出ChatGPT的自定义版本,任何人都可以创建定制版本的ChatGPT,以在日常生活中、特定任务中、工作中或家庭中更有帮助,而且可以与其他人分享这一创作。例如,GPTs可以帮助你学习任何棋盘游戏的规则,帮助教孩子数学,或设计贴纸。
- 无需编码即可创建一个GPT就像开始一个对话,给它指令和额外的知识,然后选择它可以执行的操作,如搜索网页、创建图像或分析数据。
- 本月晚些时候,OpenAI将推出GPT Store,其中包括经过验证的构建者的创作。一旦进入商店,GPTs将变得可搜索,并且可能会上升到榜单中。而且诸如生产力、教育和“娱乐”等类别中将突出显示最有用和最受欢迎的GPTs。
- 在未来的几个月里,开发者还将能够根据使用自己创建的GPT的人数来赚取收益。
首先,我们进入新版的ChatGPT界面,点击Explore,点击右侧Create,如下图:
进入创建页面,可以直接通过对话创建,对话方式创建本文不介绍,我们点击Configure,手动添加相关配置。
对于名称,描述,Logo,预设问题,知识库,可自行添加
我们可以用一个专门创建提示词的LangGPT(https://chat.openai.com/g/g-gP24xxhB2-langgpt)帮助我们创建:
它会以LangGPT的提示词模板给出合适的提示词,生成的提示词复制到Instructions,按需修改一下即可。
该GPT内置反爬提示词,防止你的提示词泄漏
我们可以让创建的GPT通过API 获取外界的信息!完成各种你需要获得的数据或者第三方提供的功能。
从官方文档的设定上看,与 ChatGPT 插件一样,Action允许您将 GPT 连接到自定义 API。
我们点击Action按钮进入以下界面:
为了更好的介绍如何使用Action,我们这里介绍简单写一个自己的API,,如果没有编码能力可跳过此部分。
我们使用express写个简单的接口,部署过程略过,具体代码如下:
const express = require("express");
const { webkit } = require("playwright");
const cors = require("cors");
const app = express();
const port = 7788;
app.use(express.json());
app.use(cors());
app.use(express.static("public"));
let browser;
let context;
async function isSelectorExists(page, selector) {
return (await page.$(selector).catch(() => null)) !== null;
}
app.get("/search", async (req, res) => {
if (!browser | !context) {
browser = await webkit.launch({
headless: false,
});
context = await browser.newContext({ storageState: "auth.json" });
}
const questions = req.query.question;
if (!questions) {
return res.status(400).send("No questions provided");
}
console.log("question", questions);
try {
const searchList = await (
await fetch(
"https://easylearn.baidu.com/edu-web-go/bgk/searchlist?query=" +
encodeURI(questions)
)
).json();
console.log("searchList", searchList.data.list[0].qid);
const answerPage = await context.newPage();
await answerPage.goto(
`https://easylearn.baidu.com/edu-page/tiangong/bgkdetail?id=${searchList.data.list[0].qid}`
);
await answerPage.waitForSelector(".tab");
const answerTab = await answerPage.$$(".tab-item");
const answers = [];
for (let i = 0; i < answerTab.length; i++) {
await answerTab[i].click();
if (!(await isSelectorExists(answerPage, ".question-anwser"))) {
await answerPage.getByText("免费查看答案与解析").click();
await answerPage.getByText("仅查看本题答案").click();
}
const question = await answerPage.locator(".question-stem").innerText();
const answer = await answerPage.locator(".question-anwser").innerText();
answers.push({ question, answer });
}
await answerPage.close();
return res.status(200).json({ answers });
} catch (error) {
console.log("err", error);
return res.status(200).json({ err: error.message });
}
});
process.on("exit", async () => {
await browser.close();
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
- 需要设置跨域
- 部署时建议配置域名证书(不建议签发R3,可能会进白名单
开发一个接口还要涉及部署等问题,还要从0写一个启动,各种配置,非常麻烦,这里推荐使用云函数Laf平台。
非常快速即可开发一个小接口并部署好,具体教程可以直接进入官网查看,这里不赘述。
我们这里写好一个接口后,我们来看一下接口如何使用。
上述express代码定义了/search
接口,是一个get
方法,query
只有一个question,返回的结果和调用示例:
可以看出,传递一个问题进去,能够得到5个候选答案。
接下来,我们开始写Action必要的接口Schema,我们这里也不需要自己直接写,而是用一个专门生成JSON Schema的工具(https://chat.openai.com/g/g-5boouomxo-gpt-api-schema-builder)即可。
我们给出接口的示例和返回的示例,它就能生成schema。
生成好之后,复制到Schema编辑框即可。
注意
每次更改schema,必须删除整个action,否则可能不会正常更新(也许是Bug
如果想要公开GPT,则必须添加隐私协议。
右侧可以在线调试GPT,记住,想要让GPT调用接口,除了schema的接口描述要写得好,也要在引导提示词添加相应的引导,例如让gpt每次回答前都执行Action。
点击右上角导出即可,可以选择公开或者分享。
- Error Talking to xxx
需仔细检查配置项是否漏填,是否网站被gpt拦截(可能是证书问题)。修改好后需要删除action重新写,否则可能不更新。
本文来自Marlene & Idealeap