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
}

运行示例

localrun

posted @ 2025-12-21 14:27  云婷  阅读(3)  评论(0)    收藏  举报