Ollama + LangChain 构建 Agent
目前LLM
非常强大,但是如果只将它们用于聊天补全、生成图像这类生成式的场景,无异于自断双臂。近年来Agent
的出现,必将会让AI
渗透到日常生活中的方方面面。
微软的semantic kernel
关于Agent
的介绍是:
An AI agent is a software entity designed to perform tasks autonomously or semi-autonomously by recieving input, processing information, and taking actions to achieve specific goals.
尽管我加粗表示了我个人认为重要的几个关键词,但是不得不说,这个介绍写得让人摸不着头脑。相比之下,LangChain
中对Agent
的定义就非常简洁:
Agent is a class that uses an LLM to choose a sequence of actions to take.
总之,我心中的Agent
,是指发挥LLM
的长处,让LLM
作为推理引擎,规划并执行外部动作。
本文简介
目前最火热的大模型当属OpenAI
和DeepSeek
,尤其是网上关于使用OpenAI
构建Agent
的子类非常多,但是在当前这个时间节点,我认为还有还有些不如意的地方:
- 并不是每个中国人都能使用常规信道获得
openai
的key
,也不是每个人都有国外信用卡来付费。 - 至于
DeepSeek
,除了系统繁忙网络超时问题之外,DeepSeek
著名的R1
推理模型并不官方支持function calling
(参见 https://github.com/deepseek-ai/DeepSeek-R1/issues/9#issuecomment-2604747754),而截至今日,最新版的function calling
尚不稳定。
注:
DeepSeek
官方针对R1
模型的函数调用给出了三种walkaround
:- 使用脚本解析模型输出到结构化格式(比如:“JSON”格式) - 设计提示词工程来指定模型产生特定格式的输出 - 自定义包装器,来模拟函数调用
所以,目前的尴尬就在于,我不想等:“高老师,我太想进步了”。
本文文章使用Ollama
+QWen2.5
来驱动。
Ollama
的意义在于我们可以本地部署,避免依赖外部网络环境,这在涉密或者离线场合意义非凡。QWen2.5
的意义在于对中文支持非常好,不像是llama3.2
那样,动不动就自动转换成英语,显得非常混乱。