跳转至

Prompt-YAML 配置化表达

通过 Agently-YAML 我们提供了一套全新的YAML语法表达方式,来帮助您更好地管理单次Agent请求,除了方便开发人员将不同模块进行解耦外,我们也希望通过这种方式,将 Agently AI应用开发框架提供的能力用一种标准化配置的方式进行跨语种表达,或是将这种表达方式提供给非开发人员使用。

如何使用

  • YAML文件/YAML文本内容:
 input:${user_input}
 use_public_tools:
 -browse
 set_tool_proxy:http://127.0.0.1:7890
 instruct:
 输出语言:中文
 output:
 page_topic:
 $type:str
 $desc:""
 summary:
 $type:str
 $desc:""
  • Python文件:

     importAgently
    
     agent_factory = (
     Agently.AgentFactory()
     .set_settings("model.Google.auth.api_key", "")
     .set_settings("current_model", "Google")
     )
    
     agent = agent_factory.create_agent()
    
     print(
     agent
     .load_yaml_prompt(
     path="./yaml_prompt.yaml",
     # 你也可以用下面方式直接传递YAML格式的字符串
     #yaml=yaml_str
     variables = {
     "user_input": "http://Agently.tech",
     }
     )
     .start()
     )
    

  • 运行结果:

     {
     "page_topic":"易用、灵活、高效的开源大模型应用开发框架",
     "summary":"Agently是一个开源的大模型应用开发框架,它可以让开发者轻松地使用大模型来构建应用程序。Agently的特点包括:\n\n* 语法简单易学,5分钟开始使用\n* 安装简单,使用pip install -U Agently即可\n* 使用灵活,可以通过几行代码指定大模型、鉴权信息等信息\n* 支持链式调用,像调用函数一样和Agent实例交互\n* 为工程开发者设计,应用开发灵活性高\n* 支持传递结构化数据灵活表达请求,管理Agent实例设定信息,提供自定义函数\n* 支持监听流式输出,使用Agently Workflow将复杂任务切分成块\n* 架构设计深度,解构了大模型驱动的Agent结构,维护了模型请求前后置信息流处理工作流等基础原子要件\n* 提供能力插件、工作流管理方案等增强开发者在应用层的表达丰富度"
     }
    

如何理解这项能力?

仔细观察上面的YAML内容,不难发现,它其实等价于使用 Agently AgenticRequest 提供的操作指令(Alias)对模型进行请求。

上面的YAML内容等价于下面的代码指令:

 importAgently

 agent_factory = (
 Agently.AgentFactory()
 .set_settings("model.Google.auth.api_key", "")
 .set_settings("current_model", "Google")
 )

 agent = agent_factory.create_agent()

 user_input = "http://Agently.tech"

 print(
 agent
 .input(user_input)
 .use_public_tools(["browse"])
 .set_tool_proxy("http://127.0.0.1:7890")
 .instruct({ "输出语言": "中文" })
 .output({
 "page_topic": ("str", ),
 "summary": ("str", ),
 })
 .start()
 )

其中: - 变量的传递在 Agently-YAML 中通过.load_yaml_prompt()方法的variables参数传递,字典中的每一个字段被视作一个变量,在YAML中通过${变量名}的方式替换使用,如果在YAML中使用了${变量名}的表达,但是没有在variables参数中传入对应的键值,则YAML中的这个表达会被保留原样,不会被替换成实际的变量值。 - 在 Agently AgenticRequest 中,.output()使用的元组输出格式表达(如("str", "在这里输出3个单词")),在 Agently-YAML 中使用以下形式进行表达:

 $type:str
 $desc:""

而除此之外的外部整体输出结构和YAML转化为Python Dictionary字典格式后的结构一致。

AltStyle によって変換されたページ (->オリジナル) /