前言

最近在搞公司的一个论坛网站,但是想要用AI审核评论和贴子的内容,原本是想使用Chat GPT,但是发现用起来还挺麻烦,不仅是技术上的问题,冲个会员也麻烦,国内的visa和master card信用卡不支持,我用我汇丰银行的master card也不信,真是服了,索性找点免费的用用,

其实这种资源还蛮多的,比如https://github.com/popjane/free_chatgpt_api传送门,不过我用了一段时间,这个老是出现各种请求不到的问题。又找了一下,发现ollama也给了好几个模型可以免费调用API,如图(也可访问https://ollama.com/v1/models):
在这里插入图片描述

使用方法

注册

直接点击https://ollama.com/settings/keys注册一个账号,这个步骤过于简单,有手就行,就不必赘述了。

创建API KEY

然后点击页面左侧的Keys(没找到这个页面的话就再点一下上面的链接),然后点击Add a API Key,然后输入一个名称(可选)就完了,是的,就这么简单。把api key复制出来,等会要用。
在这里插入图片描述

调用

这里以Java代码为例,其他语言和应用也是类似的操作方法,我这里导入了hutool和相关的库,不用这些库也是可以实现的,根据你的实际情况来就行了。


package club.beiyou.wordpress.utils;

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

public class ChatGPTClient {

    private static final String API_KEY = "你的api key";

    private static final String API_URL = "https://ollama.com/v1/chat/completions";

    private static final String MODEL = "gpt-oss:120b";//这个模型就是上面模型列表中的id,复制过来就行

    public static void main(String[] args) {
        System.out.println(chatWithGPT("请帮我写一个Java的快速排序的代码,谢谢。"));
    }

    public static String chatWithGPT(String prompt) {
        JSONObject message = new JSONObject()
                .set("role", "user")
                .set("content", prompt);

        JSONObject body = new JSONObject()
                .set("model", MODEL)
                .set("messages", JSONUtil.createArray().set(message));

        HttpResponse response = HttpRequest.post(API_URL)
                .header("Content-Type", "application/json")
                .header("Authorization", "Bearer " + API_KEY)
                .body(body.toString())
                .timeout(30_000)
                .execute();

        if (response.isOk()) {
            try {
                JSONObject resJson = JSONUtil.parseObj(response.body());
                return resJson.getJSONArray("choices")
                        .getJSONObject(0)
                        .getJSONObject("message")
                        .getStr("content");
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        } else {
            throw new RuntimeException("Request failed, HTTP status code: " + response.getStatus() + ", response body: " + response.body());
        }
    }

}

运行代码输出:
在这里插入图片描述

注意事项

这个服务并不是完全没有限制的,他还是有用量限制,具体根据什么来我也不太清楚,反正每个小时和每个礼拜都有限制,可以看一下这usage这个地方:
在这里插入图片描述

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐