# libcai **Repository Path**: tinytaro/libcai ## Basic Information - **Project Name**: libcai - **Description**: 大模型在线推理C语言函数库 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-03-11 - **Last Updated**: 2025-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # libcai - 大模型在线推理C语言函数库 ## 项目概述 libcai是一个轻量级、高性能的C语言函数库,专门用于调用大模型的在线推理API。它为开发者提供了简洁而强大的接口,使您能够轻松地将大模型AI推理能力集成到自己的应用程序中,无论是桌面应用、嵌入式系统还是服务器端应用。 ## 主要特性 - **多模型兼容**: 支持包括DeepSeek、通义千问、ChatGPT等多种主流大模型API - **多模态支持**: 不仅支持文本,还支持图像、音频和视频等多模态输入 - **高性能实现**: 纯C语言编写,内存占用低,性能卓越 - **健壮的错误处理**: 提供全面的错误检查和异常处理 - **流式响应**: 支持大模型的流式输出,实现实时交互体验 - **跨平台兼容**: 支持Linux、Windows、macOS等多种操作系统 - **外部依赖少**: 除了libcurl外,不依赖其他第三方库 ## 安装指南 ### 前置依赖 本项目仅依赖于libcurl库,您需要先安装libcurl开发包: ```bash # Debian/Ubuntu系统 sudo apt install -y libcurl4-openssl-dev # CentOS/RHEL系统 sudo yum install -y libcurl-devel # macOS系统 brew install curl ``` ### 编译安装 ```bash # 克隆仓库 git clone https://gitee.com/tinytaro/libcai.git cd libcai # 初始化并更新子模块 git submodule update --init --recursive # 创建构建目录并编译 mkdir build && cd build cmake .. make # 安装库和头文件(可选) sudo make install ``` ## 快速入门 以下是一个简单的示例,展示如何使用libcai与大模型进行对话: ```c #include #include #include "cai.h" int main() { // 创建AI助手实例 struct cai_asst* asst = cai_asst_create("YOUR_API_KEY", "https://api.example.com/v1", "model-name"); if (!asst) { fprintf(stderr, "创建AI助手失败\n"); return EXIT_FAILURE; } // 创建对话上下文 struct cai_convo* convo = cai_convo_create("你是一个有帮助的助手", 0); if (!convo) { fprintf(stderr, "创建对话失败\n"); cai_asst_destroy(asst); return EXIT_FAILURE; } // 发送问题并获取回答 char* answer = cai_asst_chat(asst, convo, "什么是人工智能?", NULL); if (answer) { printf("AI回答: %s\n", answer); free(answer); } // 释放资源 cai_convo_destroy(convo); cai_asst_destroy(asst); return EXIT_SUCCESS; } ``` 编译 ```bash $ ls test.c cai.h libcai.a $ cc test.c -L. -lcai -lcurl ``` 更多示例请参考`main.c`文件。 ![示例程序](doc/demo.gif) ## 多模态支持 libcai支持处理多种类型的输入: ```c // 发送图像并询问内容 answer = cai_asst_chat(asst, convo, "这张图片里有什么?", "path/to/image.jpg"); // 发送音频并请求分析 answer = cai_asst_chat(asst, convo, "这段音频在说什么?", "path/to/audio.mp3"); // 发送视频并请求分析 answer = cai_asst_chat(asst, convo, "视频中展示了什么内容?", "path/to/video.mp4"); ``` ## API文档 详细API文档见`doc`文件夹,包括所有函数的使用说明和参数解释。 ## 故障排除 常见问题及解决方法: - **编译错误**: 确保已安装正确版本的libcurl开发包 - **连接失败**: 检查API密钥和基础URL是否正确 - **内存问题**: 确保正确释放所有通过API获取的资源 ## 贡献指南 我们欢迎社区贡献!如果您想参与项目开发: 1. Fork本仓库 2. 创建您的特性分支 (`git checkout -b feature/amazing-feature`) 3. 提交您的改动 (`git commit -m 'Add some amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 打开一个Pull Request ## 社区和支持 - **代码仓库**: [https://gitee.com/tinytaro/libcai](https://gitee.com/tinytaro/libcai) - **问题反馈**: 请通过Gitee Issues提交问题或建议 - **联系方式**: 可通过项目Issues页面联系维护者 ## 许可证 本项目使用Apache License 2.0许可证,详情请参阅[LICENSE](LICENSE)文件。