AWEL是什么?
AWEL(Agentic Workflow Expression Language)是一套专为大模型应用开发设计的智能体工作流表达语言,它提供了强大的功能和灵活性。通过 AWEL API 您可以专注于大模型应用业务逻辑的开发,而不需要关注繁琐的模型和环境细节,AWEL 采用分层 API 的设计, AWEL 的分层 API 设计架构如下图所示:
AWEL分层设计
AWEL在设计上分为三个层次,依次为算子层、AgentFrame层以及DSL层,以下对三个层次做简要介绍。
- 算子层
算子层是指LLM应用开发过程中一个个最基本的操作原子,比如在一个RAG应用开发时。 检索、向量化、模型交互、Prompt处理等都是一个个基础算子。 在后续的发展中,框架会进一步对算子进行抽象与标准化设计。 可以根据标准API快速实现一组算子。
- AgentFrame层
AgentFrame层将算子做进一步封装,可以基于算子做链式计算。 这一层链式计算也支持分布式,支持如filter、join、map、reduce等一套链式计算操作。 后续也将支持更多的计算逻辑。
- DSL层
DSL层提供一套标准的结构化表示语言,可以通过写DSL语句完成AgentFrame与算子的操作,让围绕数据编写大模型应用更具确定性,避免通过自然语言编写的不确定性,使得围绕数据与大模型的应用编程变为确定性应用编程。
使用案例
AWEL初步的版本也已经在V0.4.2发布,我们内置提供了一些使用样例。
算子层API-RAG例子
源码在项目中位置 examples/awel/simple_rag_example.py
with DAG("simple_rag_example") as dag:trigger_task = HttpTrigger("/examples/simple_rag", methods="POST", request_body=ConversationVo)req_parse_task = RequestParseOperator()# TODO should register prompt template firstprompt_task = PromptManagerOperator()history_storage_task = ChatHistoryStorageOperator()history_task = ChatHistoryOperator()embedding_task = EmbeddingEngingOperator()chat_task = BaseChatOperator()model_task = ModelOperator()output_parser_task = MapOperator(lambda out: out.to_dict()["text"])(trigger_task>> req_parse_task>> prompt_task>> history_storage_task>> history_task>> embedding_task>> chat_task>> model_task>> output_parser_task)
位运算会将整个过程以DAG的形式编排。

算子层API调用模型+缓存例子

AgentFream层API样例
af = AgentFream(HttpSource("/examples/run_code", method = "post"))result = (af.text2vec(model="text2vec").filter(vstore, store = "chromadb", db="default").llm(model="vicuna-13b", temperature=0.7).map(code_parse_func).map(run_sql_func).reduce(lambda a, b: a + b))result.write_to_sink(type='source_slink')
DSL层API样例
DSL 采用ANTLR4 / Lark解析器
CREATE WORKFLOW RAG ASBEGINDATA requestData = RECEIVE REQUEST FROMhttp_source("/examples/rags", method = "post");DATA processedData = TRANSFORM requestData USING embedding(model = "text2vec");DATA retrievedData = RETRIEVE DATAFROM vstore(database = "chromadb", key = processedData)ON ERROR FAIL;DATA modelResult = APPLY LLM "vicuna-13b"WITH DATA retrievedData AND PARAMETERS (temperature = 0.7)ON ERROR RETRY 2 TIMES;RESPOND TO http_source WITH modelResultON ERROR LOG "Failed to respond to request";END;
当前支持的算子
基础算子
- BaseOperator
- JoinOperator
- ReduceOperator
- MapOperator
- BranchOperator
- InputOperator
- TriggerOperator
流算子
- StreamifyAbsOperator
- UnstreamifyAbsOperator
- TransformStreamAbsOperator
可执行环境
- 普通单机环境
- Ray环境
