本文介绍了如何在 C++ 中使用 Ollama API 。这篇文档旨在帮助 C++ 开发者快速上手并充分利用 Ollama 的能力。通过学习本文档,你可以轻松集成 Ollama 到你的项目中。
需要注意的是,Ollama 的社区和文档可能更侧重于 Python 和其他高级语言的集成。在 C++ 项目中使用大模型,通常会使用 Llama.cpp (llama.cpp 教程) 。Llama.cpp 是一个由 Georgi Gerganov 开发的开源项目,它提供了 Meta 的 LLaMa 架构的高效 C/C++ 实现,专注于大型语言模型(LLM)的推理过程。
关于 C++ 项目的开发环境这里不再赘述,只介绍如何集成 Ollama。请确保你已经安装并运行了 Ollama,并下载了所需要的模型(参考第二章内容)。
直接调用 Ollama API 比较繁琐,这里介绍两种思路。
- 使用封装好的 C++ 类库。
- 通过 Python 调用 Ollama 的模型。
在 Github 可以找到封装好的 C++ 类库,只需要引入头文件即可使用,避免重复造轮子。这里以 ollama-hpp 为例:
#include "ollama.hpp"
std::cout << ollama::generate("llama3.1:latest", "how to use ollama in a cpp project?") << std::endl;
目前,Github 上封装好的 C++ 类库只有这一个,在测试过程中也存在一些 bug 需要手动修复,不建议使用这种方法。
在 C++ 项目中集成 Ollama 的功能,可以通过 Python 调用 Ollama 的模型,再将结果传递给 C++ 程序:
-
编写 Python 代码调用 Ollama API:使用 Python 编写代码,通过 Ollama 提供的 API 接口调用所需的模型生成文本或进行对话。以下是一个简单的 Python 调用示例:
import requests def call_ollama_api(prompt, model_name="llama3.1:latest"): url = "http://localhost:11434/api/generate" headers = {"Content-Type": "application/json"} payload = { "model": model_name, "prompt": prompt, "stream": False } response = requests.post(url, json=payload, headers=headers) return response.json() # 示例调用 response = call_ollama_api("黑神话好玩吗?") print(response)
-
从 C++ 调用 Python 脚本:在 C++ 程序中,可以使用系统调用来执行 Python 脚本,并将所需的文本或问题作为参数传递给 Python 脚本。例如,在 C++ 中可以使用以下方式调用 Python 脚本:
#include <cstdlib> int main() { system("python call_ollama.py '黑神话好玩吗?'"); return 0; }
参考文档