prompt提示词调优工具介绍-ChainForge
大模型开发/技术交流
- LLM
- 文心大模型
- Prompt
9月12日517看过
☞ 如果您在大模型落地过程中遇到任何问题,可以提交工单咨询:https://console.bce.baidu.com/ticket/#/ticket/create?productId=279
☞ 同时,大模型技术专家可为您提供效果调优、应用定制和技术培训等付费专属服务:https://cloud.baidu.com/product/llmservice.html
在人工智能和自然语言处理领域,大型语言模型(LLM)的兴起为各行各业带来了巨大变革。然而,如何有效地评估和优化这些模型的输出一直是一个挑战。为了解决这个问题,来自哈佛大学人机交互实验室的研究人员开发了ChainForge - 一个开源的可视化工具包,旨在简化提示词工程及评估测试的过程。
核心功能
ChainForge 的设计理念是提升提示工程和 LLM 评估的直观性和效率。其主要功能包括:
-
多模型同时查询:用户可以同时向多个大模型发送请求,快速对比不同模型的效果。
-
跨模型比较:支持在不同提示排列、模型和模型设置之间比较响应质量,帮助用户为特定用例选择最佳提示词和模型。
-
评估指标设置:用户可以设置评估的函数,并支持可视化展示评估结果。
-
多会话管理:支持跨模板参数和聊天模型进行多个对话,用户不仅可以模板化提示,还可以模板化后续的聊天消息。
-
可视化分析:提供直观的可视化工具,如用于数值指标的分组箱线图和用于布尔指标的直方图,帮助用户更好地理解评估结果。
安装方法
pip install chainforge
推荐在python venv虚拟环境中安装.
启动方式:
执行 chainforge serveServing Flask server on localhost on port 8000...* Serving Flask app 'chainforge.flask_app'* Debug mode: offWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.* Running on http://localhost:8000
然后在 Chrome、Firefox或Edge 浏览器中打开 http://localhost:8000
添加千帆大模型
import osimport qianfanimport jsonfrom chainforge.providers import provideros.environ["QIANFAN_ACCESS_KEY"] = ""os.environ["QIANFAN_SECRET_KEY"] = ""COHERE_SETTINGS_SCHEMA = {"settings": {"temperature": {"type": "number","title": "temperature","description": "温度.","default": 0.80,"minimum": 0,"maximum": 1.0,"multipleOf": 0.01,},"system": {"type": "string","title": "system","description": "系统人设.","default": "",},"disable_search": {"type": "boolean","title": "disable_search","description": "是否强制关闭实时搜索功能.","default": True,},},"ui": {"temperature": {"ui:help": "Defaults to 0.80. 较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定","ui:widget": "range"},"system": {"ui:widget": "textarea"},"disable_search": {"ui:widget": "radio"}}}@provider(name="QIANFAN",emoji="🖇",models=list(qianfan.ChatCompletion().models()),settings_schema=COHERE_SETTINGS_SCHEMA,)def QianfanCompletion(prompt: str, model: str, chat_history=None, temperature: float = 0.80, **kwargs) -> str:chat_comp = qianfan.ChatCompletion()print(f"Calling qianfan model {model} with prompt '{prompt}'...")messages = []if chat_history:for item in chat_history:role = item['role']content = item['content']if role != 'user':content = json.loads(content.lstrip('\\').replace('\\{', '{').replace('\\}', '}')).get('result')messages.append({"role": role, "content": content})messages.append({"role": "user", "content": prompt})print(f"messages: {messages}")resp = chat_comp.do(model=model, messages=messages, temperature=temperature, **kwargs)result = resp['body']# 格式化历史消息,一并输出到结果中last_text = [f"{'user' if item['role'] == 'user' else model}: {item['content']}" for item in messages]result['history'] = '\n\n'.join(last_text) + f"\n\n{model}: {resp['body']['result']}"return json.dumps(result, ensure_ascii=False)
上述python内容保存为文件拖入即可
快速使用
Chainforge可以很方便的通过可视化的方法编辑工作流
示例:对比ERNIE3.5和ERNIE 4.0在同一提示词场景下的效果
主要支持的节点如下:
-
Tabular Data Node
支持导入excel文件进行批量测试,选择对应的列作为参数传入到prompt中
-
TextFields Node
文本输入,支持同时输入多个文本内容传入到prompt
-
Prompt Node
提示词节点,提示词支持变量,变量使用{}表示,如果提示词中{}需要转义,使用 \ 即可
可以选择多个模板同时执行
运行完成后,点击Inspect responses 即可查看结果
-
Inspect Node
查看结果,支持手动标注结果及导出execl
Processor Node
代码处理节点,支持编写代码对输入输出进行处理,例如对response提取指定参数等
示例:对响应内容的格式进行处理,只提取结果等。
Evaluator Node
评估节点,支持编写JS、Python代码执行对比评估,可以根据自身需求定制评估函数,例如相似度计算、格式校验等等,代码也是本地环境中执行,可以按需在自己的环境中安装第三方库。
示例:对输出的文本长度进行比较,可以很直观的对比不同模型的表现。
更多使用方法可以参考https://chainforge.ai/docs/
☞ 如果您在大模型落地过程中遇到任何问题,可以提交工单咨询:https://console.bce.baidu.com/ticket/#/ticket/create?productId=279
☞ 同时,大模型技术专家可为您提供效果调优、应用定制和技术培训等付费专属服务:https://cloud.baidu.com/product/llmservice.html
评论