CangjieMagic-Cjoy大模型问答Web应用示例
代码示例gitcode地址
https://gitcode.com/yunting/CangjieMagic-WebDemo.git
cjpm.toml
[package]
cjc-version = "1.0.0"
name = "magicwebdemo"
description = "nothing here"
version = "1.0.0"
target-dir = ""
src-dir = ""
output-type = "executable"
compile-option = ""
override-compile-option = ""
link-option = ""
package-configuration = {}
[dependencies]
cjoy = { git = "https://gitcode.com/Cangjie-SIG/cjoy.git", branch = "main" }
magic = { path = "./CangjieMagic" }
代码示例
package magicwebdemo
import magic.dsl.*
import magic.prelude.*
import magic.config.Config
import cjoy.*
import std.env.*
@agent[ model: "dashscope:qwen-plus",
executor: "naive",
rag: {
source: "./docs/tutorial.md", // 静态知识库支持
mode: "static"
}
]
class QABot {
@prompt[pattern: ERA] (
expectation: "代码块被标签 ```cangjie 和 ```包裹",
role: "简单问答助手",
action: "搜索文档获取知识并回答问题"
)
}
func chat(q: String, emitter: JoySseEmitter, agent: QABot): Unit {
let result = agent.chat(q)
emitter.sendEvent(JoyServerEventBuilder().data("${result}\n\n"))
emitter.sendEvent(JoyServerEventBuilder().data("done\n\n"))
emitter.end()
}
main(): Int64 {
//获取环境变量
match (getVariable("DASHSCOPE_API_KEY")) {
case Some(key) => Config.env["DASHSCOPE_API_KEY"] = key
case None =>
println("ERROR: 请设置环境变量 DASHSCOPE_API_KEY")
return 1
}
Config.defaultEmbeddingModel = ModelManager.createEmbeddingModel("dashscope:text-embedding-v2")
//创建对话Agent实例
let agent = QABot()
//配置服务
var cfg = JoyConfig()
cfg.enableDebugLog = true
// 创建joy实例
let joy = Joy.create(cfg)
//启动页面
joy.router.staticFile("/index", "./frontend/index.html")
//对话接口
joy.router.get("/chat", { ctx: JoyContext =>
//跨源
ctx.header("Access-Control-Allow-Origin", "*")
let emitter = ctx.eventEmitter()
let q = ctx.getQuery("q").getOrDefault({ =>"你好" })
println("q: ${q}")
chat(q, emitter, agent)
})
//启动服务
joy.run("0.0.0.0", 18881)
return 0
}
运行示例


浙公网安备 33010602011771号