Giter Site home page Giter Site logo

marlenejiang / homeworkhelper Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 1.0 6.49 MB

学生作业帮,包含文心一言应用,GPTs,通义千问以及相关插件服务

Home Page: https://gpts.idealeap.cn

License: MIT License

JavaScript 1.59% Python 94.60% CSS 3.80%
ernie gpt gpts qwen

homeworkhelper's Introduction

HomeWorkHelper

学生作业帮,包含文心一言应用,GPTs,以及相关插件服务

最终效果

能力

  1. 回答问题会结合网络搜索的答案(具有实时性和符合标准答案),引导用户自己得出正确答案。
  2. 必要时能够通过画图引导用户如何构思和解题。
  3. 必要时会用代码解释器对一些数值问题进行计算。

效果图

上手体验

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

阅读以下内容你将学会

  1. 什么是GPTs
  2. 如何快速创建GPTs引导词
  3. 如何对接自定义API

什么是GPTs

  • GPTs是OpenAI推出ChatGPT的自定义版本,任何人都可以创建定制版本的ChatGPT,以在日常生活中、特定任务中、工作中或家庭中更有帮助,而且可以与其他人分享这一创作。例如,GPTs可以帮助你学习任何棋盘游戏的规则,帮助教孩子数学,或设计贴纸。
  • 无需编码即可创建一个GPT就像开始一个对话,给它指令和额外的知识,然后选择它可以执行的操作,如搜索网页、创建图像或分析数据。
  • 本月晚些时候,OpenAI将推出GPT Store,其中包括经过验证的构建者的创作。一旦进入商店,GPTs将变得可搜索,并且可能会上升到榜单中。而且诸如生产力、教育和“娱乐”等类别中将突出显示最有用和最受欢迎的GPTs。
  • 在未来的几个月里,开发者还将能够根据使用自己创建的GPT的人数来赚取收益。

手把手创建GPTs

首先,我们进入新版的ChatGPT界面,点击Explore,点击右侧Create,如下图:

进入创建页面,可以直接通过对话创建,对话方式创建本文不介绍,我们点击Configure,手动添加相关配置。

对于名称,描述,Logo,预设问题,知识库,可自行添加

如何创建更好的提示词?

我们可以用一个专门创建提示词的LangGPThttps://chat.openai.com/g/g-gP24xxhB2-langgpt)帮助我们创建:

它会以LangGPT的提示词模板给出合适的提示词,生成的提示词复制到Instructions,按需修改一下即可。

该GPT内置反爬提示词,防止你的提示词泄漏

如何创建Actions(自定义API插件

我们可以让创建的GPT通过API 获取外界的信息!完成各种你需要获得的数据或者第三方提供的功能。

从官方文档的设定上看,与 ChatGPT 插件一样,Action允许您将 GPT 连接到自定义 API。

我们点击Action按钮进入以下界面:

写一个自己的API

为了更好的介绍如何使用Action,我们这里介绍简单写一个自己的API,,如果没有编码能力可跳过此部分。

Express

我们使用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}`);
});

⚠️注意

  1. 需要设置跨域
  2. 部署时建议配置域名证书(不建议签发R3,可能会进白名单

Laf

开发一个接口还要涉及部署等问题,还要从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。

导出

点击右上角导出即可,可以选择公开或者分享。

常见问题

  1. Error Talking to xxx

需仔细检查配置项是否漏填,是否网站被gpt拦截(可能是证书问题)。修改好后需要删除action重新写,否则可能不更新。

结语

本文来自Marlene & Idealeap

homeworkhelper's People

Contributors

marlenejiang avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

luorome31

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.