ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Rag评测–模型配置

Rag评测–模型配置 上篇已经配置好es数据库链接了那么离构建query集确实是越来越近了接下来咱们就先把模型配置做好后面直接调用就可以输出query集了第一步先写好出题模板的提示词。新建一个models.py文件def question_prompt(context:str) - str: 把文档内容塞进出题模板返回完整提示词 template ###角色 你是一个问答对的专家 ###任务 (定任务客官自己写) ###返回格式 你只能以json格式返回数据 ###给定文本 {context} return template.replace({context}, context)提示词模板四大要素立角色⁺定任务⁺给格式⁺给约束其实怎么写大家都可以随意发挥的不过这里我写了个给定文本{context}为什么写在这最后面再讲接下来接上面代码配置出题模型使用request直调。from config import configs import request , json def ask_llm(prompt: str) -str: #出题模型和裁判模型都调用config配置的模型 confconfigs[llm] urlconf[base_url] payload{ model: conf[model], message:[{role:user , content:prompt}], stream : True, } headers{Authorization:fBearer {conf[api_key]} resrequest.post(url, jsonpayload, headersheaders,timeout60,streamTrue) #通过请求大模型接口传递请求头请求体等因为是流式输出返回的真实数据长这样 data : {choices: [{delta: {content:正文chunk}}]} data : {choices: [{delta: {content:正文chunk}}]{}所以接下来需要继续从每行里扣出增量最后拼起来给到parts。 parts[] for line in res.iter_lines(): 下面的代码因为特别原因不好全写出来核心逻辑是剥前缀跳过空行解析json扣增量字段再拼接起来这个大家可以用ai写核心逻辑就是这样 return .join(parts)写到这里就把基础的模型配置写好了且拿到了文本内容。接下来就开始正式的构建query集了前面说为什么在prompt里写上给定文本{context}而不是写一个没有值的提示词把context写在message里比如这样message : [ {role: user,content:prompt}, {role: user,content:context} ]其实这样写也行但最主要的原因是前面的写法更加清晰进一个文档出一个文档模板逻辑锁在函数make_question_prompt(context)里谁调用都不需要模板长啥样后面这个调用需要发送模板和context两样东西反而会变复杂后续几百个测试集输出容易上下文边界混乱所以更推荐直接写在提示词模板中。
返回列表