# 关于 Hackathon 的 Q&A # Q: 怎样才算是完成了一个可以参加 hackathon 的机器人? **A:** 只要实现了[接口文档](https://huggingface.co/spaces/baixing/hackathon_test/blob/main/bot-api.md)中的任一接口,即可将机器人接入到瀛海威广场。 这是一场几乎所有人都能参与的 hackathon。 - 不会写代码的同学:只需要 duplicate [demo 程序](https://huggingface.co/spaces/baixing/hackathon_chatbot_openai_api),修改其中的 prompt,就可以完成一个用 prompt 来定制的机器人。 - 喜欢写代码的同学: 可进一步修改demo程序中的 chat 方法添加自己的逻辑。 - 更高级别的同学:可以多多尝试 Hugging Face 上的各种模型,开发出更强大的机器人。 # Q: 是否一定要使用 Hugging Face 的 Space **A:** 不需要。你完全可以在你自己的服务器上部署服务。如果在自己的服务器上部署,需要按[接口文档](https://huggingface.co/spaces/baixing/hackathon_test/blob/main/bot-api.md)中的标准接口来实现。如果是对 HF 上 demo 的 duplicate space,只需要提供默认的 api 地址即可。 # Q: 项目是否一定要开源 **A:** 不需要。如果是在 hugging face 上,你需要将 space 设置为 public。但你可以将代码托管在 github 上,将 github 的 token 存在 settings 中,然后 app 去 clone 该 repo。 # Q: 我的代码准备开源,但是 openai 或 baixingai 的 apikey 不能公开呀。怎么处理? **A:** 你可以把 key 放在 space settings 里的 Repository secrets ,然后通过 os.getenv("key_name") 来读取。 # Q: 我需要多轮对话能力,如何实现? **A:** 接口中的 uid 是用户的唯一标记,可以通过它查找历史对话数据。目前的多轮对话是通过线程间共享的全局变量来实现的,一旦 space 重启数据就将丢失。在实际应用时,应考虑存到数据库,并且读写操作可能需要加锁。