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那样,动不动就自动转换成英语,显得非常混乱。
