拒绝Token焦虑,盘点可白嫖的6款LLM大语言模型API~

2024-06-15 1282阅读

拒绝Token焦虑,盘点可白嫖的6款LLM大语言模型API~

上篇分享了如何从0到1搭建一套语音交互系统。

其中,大语言模型(LLM)是实现智能对话的关键所在。

很多小伙伴反应:本地部署 LLM 还是有门槛,本文将系统盘点:目前市面上都有哪些可以免费调用的云端API?

方便大家开发基于LLM的应用,快速实现自己的想法,让创意起飞~🚀

什么是 LLM?

相信看到这里的你,对 LLM 已经有所了解了,考虑到还有不了解 LLM 的小伙伴,猴哥再啰嗦几句。

LLM,也就是大型语言模型,就像是一个超级学霸,它通过阅读海量的书本、文章、对话等资料,学习到了人类语言的很多规则和习惯。这个学霸不仅学得快,而且还特别聪明,能够用学到的知识来回答问题、写文章,把它当成你的全能小助手完全没问题。

随着2023年 OpenAI 的 ChatGPT 横空出世,海内外各大 LLM 厂商都推出了自家的大语言模型,与此同时,所有厂商都提供了 API 访问,让开发者可以轻松使用自家的LLM,开发出更多有创意的应用。

不过,绝大部分 API 都是需要付费的。对于绝大部分 API 而言,一般都采用按 token 收费,token 可以简单理解为LLM处理的字数,对于中文而言,token 和字数的换算比例约为1:1.6。

对于个人开发者和初创企业而言,想简单进行 demo 测试,验证产品可行性,如果能有一些免费的 API,自然是再香不过的了。

免费调用的LLM API

1. GPT 系列

GPT 系列是 LLM 界当仁不让的大网红,也是 OpenAI 的印钞机,如果你想调用官网提供的 API,那付费是免不了的。

接下来,猴哥将介绍三款免费的 API,让你直达GPT。

尽管都有一些次数限制,不过对于简单做个小demo,完全够用了。

1.1 GPT_API_free

基本信息:

地址:https://github.com/chatanywhere/GPT_API_free

限制:

  • 免费 API 100请求/天/IP&Key调用频率(gpt和embedding分开计算,各100次)
  • 免费 API 限制使用gpt-3.5-turbo,gpt-4 和 embeddings模型

    使用步骤:

    • 申请领取内测免费API Key (需要你的 github 账号授权)

      拒绝Token焦虑,盘点可白嫖的6款LLM大语言模型API~

    • 保存 API key:sk-CsUwFWsagU5IwyAcZhPBKs3ks1TcOlLUXgoBl9FoXB7KKW
    • 保存代理 url:下面二选一
      • https://api.chatanywhere.tech (国内中转,延时更低,host1和host2二选一)
      • https://api.chatanywhere.com.cn (国内中转,延时更低,host1和host2二选一)
      • 调用测试:
        • 模型列表:查看支持哪些模型
          import os
          import requests
          from openai import OpenAI
          api_key = os.getenv("OPENAI_API_KEY", "sk-CsUwFWsagU5IwyAcZhPBKs3ks1TcOlLUXgoBl9FoXB7KKW")
          base_urls  = ["https://api.chatanywhere.tech/v1", "https://api.chatanywhere.com.cn/v1"]
          client = OpenAI(api_key=api_key, base_url=base_urls[0])
          def get_model_list():
              url = base_urls[0] + "/models"
              headers = {
                  'Authorization': f'Bearer {api_key}',
                  'User-Agent': 'Apifox/1.0.0 (https://apifox.com)'
                  }
              response = requests.request("GET", url, headers=headers)
              data = response.json()['data']
              models = [model['id'] for model in data]
              print(models)
          
          • 多轮对话生成:

            因为免费 API 无法使用 “text-davinci-003” 模型,所以无法调用文本补全方法:client.completions.create

            # 非流式响应
            def chat(model="gpt-3.5-turbo", messages=[], temperature=0.7):
                completion = client.chat.completions.create(
                    model=model,
                    messages=messages,
                    temperature=temperature,
                    )
                return completion.choices[0].message.content
            # 流式响应
            def chat_stream(model="gpt-3.5-turbo", messages=[], temperature=0.7):
                completion = client.chat.completions.create(
                    model=model,
                    messages=messages,
                    temperature=temperature,
                    stream=True,
                    )
                for chunk in completion:
                    if chunk.choices[0].delta.content is not None:
                        yield chunk.choices[0].delta.content
            if __name__ == '__main__':
                messages = [
                {'role': 'system', 'content': '你是百科全书'}, # 人设提示词,可以不添加
                {'role': 'user','content': '鲁迅和周树人的关系'},
                ]
                res = chat(model="gpt-3.5-turbo", messages=messages)
                print(res)
                for text in chat_stream(model="gpt-3.5-turbo", messages=messages):
                    print(text, end='')
            
            • 文本向量
              def get_embedding(model="text-embedding-ada-002", input_text="hello world"):
                  embedding = client.embeddings.create(
                      model=model,
                      input=input_text,
                      )
                  return embedding.data[0].embedding
              
              • 更多参数设置,可查看api文档:https://chatanywhere.apifox.cn/,或者 OpenAI官方文档

                1.2 GPT4free

                基本信息:

                地址:https://github.com/xtekky/gpt4free

                简介:可以直接安装python调用,也可以docker部署到本地。很容易封IP,不建议使用。

                使用步骤:

                • 安装最新版的g4f:pip install -U g4f
                • 调用测试:
                  • 对话生成:
                    from g4f.client import Client
                    client = Client()
                    def text_generation(model="gpt-3.5-turbo", messages=[], temperature=0.7):
                        completion = client.chat.completions.create(
                            model=model,
                            messages=messages,
                            temperature=temperature,
                            )
                        return completion.choices[0].message.content
                    if __name__ == '__main__':
                        messages = [{'role': 'user','content': '你是谁'}]
                        print(text_generation(messages=messages))
                    

                    1.3 Coze

                    基本信息:

                    API文档:https://www.coze.com/docs/developer_guides/coze_api_overview?_lang=zh

                    简介:海外版Coze,封装了对 GPT 的调用。(PS:不了解 Coze 的小伙伴,可以看这里:一文搞清:Coze、扣子和GPTs的区别)

                    限制:每个注册用户只有 100 次免费调用额度

                    调用示例:

                    import requests
                    import json
                    url = "https://api.coze.com/open_api/v2/chat"
                    headers = {
                        'Authorization': 'Bearer your_token',
                        'Content-Type': 'application/json',
                        'Accept': '*/*',
                        'Host': 'api.coze.com',
                        'Connection': 'keep-alive'
                    }
                    query =""""
                        你了解遥远的救世主这本书么,结合搜索结果来回答
                        """
                        
                    # user 标识用户 conversation_id 标识哪一次会话 chat_history 用于输入历史对话
                    data = {
                        "bot_id": "7370949251666477072",
                        "user": "0",
                        "conversation_id": "123",
                        "query": query,
                        "stream": False,}
                    response = requests.post(url, headers=headers, data=json.dumps(data))
                    print(response.text)
                    

                    2. LLaMA3-70B

                    基本信息:

                    地址:https://build.nvidia.com/explore/discover#llama3-70b

                    限制:每个注册用户只有 1000 次免费调用额度

                    使用步骤:

                    由于和OpenAI API类似,参考 GPT_API_free 使用即可,下面给出一个调用示例:

                    from openai import OpenAI
                    client = OpenAI(
                      base_url = "https://integrate.api.nvidia.com/v1",
                      api_key = "$API_KEY_REQUIRED"
                    )
                    completion = client.chat.completions.create(
                      model="meta/llama3-70b-instruct",
                      messages=[{"role":"user","content":"xxx"}],
                      temperature=0.5,
                      top_p=1,
                      max_tokens=1024,
                      stream=True
                    )
                    for chunk in completion:
                      if chunk.choices[0].delta.content is not None:
                        print(chunk.choices[0].delta.content, end="")
                    

                    3. DeepSeek

                    基本信息:

                    API 文档:https://platform.deepseek.com/api-docs/zh-cn/

                    限制:新注册用户,有免费额度,一个月有效期

                    使用步骤:

                    和OpenAI API类似,参考 GPT_API_free 使用即可

                    4. Kimi

                    基本信息:

                    API 文档:Moonshot AI - 开放平台

                    API Key:https://platform.moonshot.cn/console/api-keys

                    限制:

                    • 新注册有免费额度,领取到 15 元的 token 的试用量
                    • 速率限制:4种方式:并发、RPM(每分钟请求数)、TPM(每分钟 Token 数)、TPD(每天 Token 数)其中任何一种选项达到,立即执行限制。

                      拒绝Token焦虑,盘点可白嫖的6款LLM大语言模型API~

                      支持的模型:

                      • moonshot-v1-8k: 它是一个长度为 8k 的模型,适用于生成短文本。
                      • moonshot-v1-32k: 它是一个长度为 32k 的模型,适用于生成长文本。
                      • moonshot-v1-128k: 它是一个长度为 128k 的模型,适用于生成超长文本。

                        使用步骤:

                        和OpenAI API类似,参考 GPT_API_free 使用即可

                        调用示例:

                        • 对话生成接口:
                          from openai import OpenAI
                           
                          client = OpenAI(
                              api_key = "$MOONSHOT_API_KEY",
                              base_url = "https://api.moonshot.cn/v1",
                          )
                          completion = client.chat.completions.create(
                              model = "moonshot-v1-8k",
                              messages = [
                                  {"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手。"},
                                  {"role": "user", "content": "你好,我叫李雷,1+1等于多少?"}
                              ],
                              temperature = 0.3,
                          )
                          print(completion.choices[0].message.content)
                          
                          • 文件相关(文件内容抽取/文件存储)接口:限时免费

                            注:单个用户最多只能上传 1000 个文件,单文件不超过 100MB,同时所有已上传的文件总和不超过 10G 容量。如果您要抽取更多文件,需要先删除一部分不再需要的文件。

                            # 文档读取
                            from pathlib import Path
                            from openai import OpenAI
                             
                            client = OpenAI(
                                api_key = "$MOONSHOT_API_KEY",
                                base_url = "https://api.moonshot.cn/v1",
                            )
                            # xlnet.pdf 是一个示例文件, 支持 pdf, doc 以及图片等格式, 对于图片和 pdf 文件,提供 ocr 相关能力
                            file_object = client.files.create(file=Path("xlnet.pdf"), purpose="file-extract")
                            # 获取结果
                            file_content = client.files.content(file_id=file_object.id).text
                            
                            # 把它放进对话请求中
                            messages = [
                                {
                                    "role": "system",
                                    "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。",
                                },
                                {
                                    "role": "system",
                                    "content": file_content,
                                },
                                {"role": "user", "content": "请简单介绍 xlnet.pdf 讲了啥"},
                            ]
                             
                            # 然后调用 chat-completion, 获取 Kimi 的回答
                            completion = client.chat.completions.create(
                              model="moonshot-v1-32k",
                              messages=messages,
                              temperature=0.3,
                            )
                            print(completion.choices[0].message)
                            
                            # 列出文件列表
                            file_list = client.files.list()
                            for file in file_list.data:
                                print(file) # 查看每个文件的信息
                            # 删除
                            client.files.delete(file_id=file_id)
                            # 获取指定文件信息
                            client.files.retrieve(file_id=file_id)
                            # FileObject(
                            # id='clg681objj8g9m7n4je0',
                            # bytes=761790,
                            # created_at=1700815879,
                            # filename='xlnet.pdf',
                            # object='file',
                            # purpose='file-extract',
                            # status='ok', status_details='') # status 如果为 error 则抽取失败
                            

                            5. ChatGLM

                            基本信息:

                            API 文档:https://open.bigmodel.cn/dev/api#overview

                            API Key:https://open.bigmodel.cn/overview

                            支持的模型:

                            • 通用大模型:glm-4, glm-4v, glm-3-turbo
                            • 图像大模型:cogview-3
                            • 向量模型:embedding-2

                              限制:新注册有免费额度,领取到 18 元的 token 的试用量

                              使用步骤:

                              • 安装:
                                # 安装最新版,支持 GLM-4、GLM-3-Turbo,支持System Prompt、FunctionCall、Retrieval、Web_Search等新功能
                                pip install --upgrade zhipuai
                                

                                调用示例:

                                • 官方 SDK 调用:
                                  from zhipuai import ZhipuAI
                                  client = ZhipuAI(api_key="") # 请填写您自己的APIKey
                                  # 同步调用 - 直接返回结果
                                  response = client.chat.completions.create(
                                    model="glm-4",  # 填写需要调用的模型名称
                                      messages=[
                                          {"role": "system", "content": "你是一个乐于解答各种问题的助手。"},
                                          {"role": "user", "content": "你好!你叫什么名字"},
                                      ],
                                      stream=False,
                                      )
                                  print(response.choices[0].message)
                                  # 异步调用 - 调用后会立即返回一个任务 ID,然后用任务ID查询调用结果
                                  response = client.chat.asyncCompletions.create(
                                      model="glm-4",  # 填写需要调用的模型名称
                                      messages=[
                                          {
                                              "role": "user",
                                              "content": "请你作为童话故事大王,写一篇短篇童话故事,故事的主题是要永远保持一颗善良的心,要能够激发儿童的学习兴趣和想象力,同时也能够帮助儿童更好地理解和接受故事中所蕴含的道理和价值观。"
                                          }
                                      ],
                                  )
                                  print(response)
                                  # 流式调用 - 打字机式返回
                                  response = client.chat.completions.create(
                                    model="glm-4",  # 填写需要调用的模型名称
                                      messages=[
                                          {"role": "system", "content": "你是一个乐于解答各种问题的助手。"},
                                          {"role": "user", "content": "你好!你叫什么名字"},
                                      ],
                                      stream=True,
                                      )
                                  for chunk in response:
                                      print(chunk.choices[0].delta, end="")    
                                  
                                  • OpenAI SDK 调用
                                    from openai import OpenAI 
                                     
                                    client = OpenAI(
                                        api_key="your api key",
                                        base_url="https://open.bigmodel.cn/api/paas/v4/"
                                    )
                                    completion = client.chat.completions.create(
                                        model="glm-4",  
                                        messages=[    
                                            {"role": "system", "content": "你是一个聪明且富有创造力的小说作家"},    
                                            {"role": "user", "content": "请你作为童话故事大王,写一篇短篇童话故事,故事的主题是要永远保持一颗善良的心,要能够激发儿童的学习兴趣和想象力,同时也能够帮助儿童更好地理解和接受故事中所蕴含的道理和价值观。"} 
                                        ],
                                        top_p=0.7,
                                        temperature=0.9
                                     ) 
                                     
                                     print(completion.choices[0].message)
                                    

                                    6. Spark

                                    基本信息:

                                    API 文档:https://xinghuo.xfyun.cn/sparkapi

                                    限制:

                                    • Spark3.5 Max 和 Spark Pro, 分别有免费的 200万 token,有效期1年
                                    • Spark Lite 完全免费
                                    • 和 OpenAI API 不一样,必须使用OpenAI API 的场景可能无法使用,或者可以自己封装成 OpenAI API 。

                                      拒绝Token焦虑,盘点可白嫖的6款LLM大语言模型API~

                                      使用步骤:

                                      • 安装:
                                        pip install --upgrade spark_ai_python
                                        
                                        • 查看并保存自己的接口认证信息:https://console.xfyun.cn/services/cbm
                                        • 调用测试:

                                          参考:星火认知大模型Web API文档 | 讯飞开放平台文档中心

                                          from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
                                          from sparkai.core.messages import ChatMessage
                                          # 注意 替换为自己的接口认证信息
                                          SPARKAI_APP_ID = 'xxx'
                                          SPARKAI_API_SECRET = 'xxx'
                                          SPARKAI_API_KEY = 'xxx'
                                          model = 'spark lite'
                                          if model =='spark lite':
                                              SPARKAI_URL = 'wss://spark-api.xf-yun.com/v1.1/chat'
                                              SPARKAI_DOMAIN = 'general'
                                          elif model =='spark pro':
                                              SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.1/chat'
                                              SPARKAI_DOMAIN = 'generalv3'
                                          elif model =='spark max':
                                              SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat'
                                              SPARKAI_DOMAIN = 'generalv3.5'
                                          spark = ChatSparkLLM(
                                                  spark_api_url=SPARKAI_URL,
                                                  spark_app_id=SPARKAI_APP_ID,
                                                  spark_api_key=SPARKAI_API_KEY,
                                                  spark_api_secret=SPARKAI_API_SECRET,
                                                  spark_llm_domain=SPARKAI_DOMAIN,
                                                  streaming=False,
                                              )
                                          if __name__ == '__main__':
                                              messages = [
                                                  ChatMessage(role="user", content='你好呀'),
                                              ]
                                              handler = ChunkPrintHandler()
                                              a = spark.generate([messages], callbacks=[handler])
                                              print(a.generations[0][0].text)
                                          

                                          LLM API - All in One

                                          考虑到大部分 API 都提供了兼容OpenAI API的形式,我们可以把所有服务封装成一个类,实现一套代码调用任意想用的模型,开箱即用👇

                                          from openai import OpenAI
                                          # 枚举所有可用的模型服务
                                          model_dict = {
                                              'gpt-3.5-turbo': {
                                                  'api_key': 'sk-CsUwFWsagU5IwyAcZhPBKs3ks1TcOlLUXgoBl9FoXB7wKW',
                                                  'base_url': 'https://api.chatanywhere.tech',
                                              },
                                              'gpt-4': {
                                                  'api_key': 'sk-CsUwFWsagU5IwyAcZhPBKs3ks1TcOlLUXgoBl9FoXaKwKW',
                                                  'base_url': 'https://api.chatanywhere.tech',
                                              },
                                          }
                                          # 设置人设提示词,根据需要进行修改
                                          prompt_dict = {
                                              'gpt-3.5-turbo': [
                                                  {"role": "system", "content": "你是 gpt-3.5"},
                                              ],
                                              'gpt-4': [
                                                  {"role": "system", "content": "你是 gpt-4"},
                                              ],
                                          }
                                          class LLM_API:
                                              def __init__(self, api_key, base_url, model):
                                                  self.client =  OpenAI(
                                                      api_key=api_key,
                                                      base_url=base_url,
                                                  )
                                                  self.model = model
                                              
                                              def __call__(self, messages, temperature=0.7):
                                                  completion = self.client.chat.completions.create(
                                                      model=self.model,
                                                      messages=messages,
                                                      temperature=temperature,
                                                  )
                                                  return completion.choices[-1].message.content
                                          if __name__ == '__main__':
                                              model = 'gpt-3'
                                              llm = LLM_API(model_dict[model]['api_key'], model_dict[model]['base_url'], model)
                                              user_question = "你是谁"
                                              messages = prompt_dict[model] + [{"role": "user", "content": user_question},]
                                              print(llm(messages))
                                          

                                          写在最后

                                          看到这里,你已经手握 LLM 开发的生产资料,祝大家都能借助这些免费的 API 玩转大模型,开发出更多 AI 创意应用。

                                          如果还有本文没有收集到的 API,欢迎评论区告诉我~

                                          如果本文对你有帮助,欢迎点赞收藏备用!

                                          猴哥一直在做 AI 领域的研发和探索,会陆续跟大家分享路上的思考和心得。

                                          最近开始运营一个公众号,旨在分享关于AI效率工具、自媒体副业的一切。用心做内容,不辜负每一份关注。

                                          新朋友欢迎关注 “猴哥的AI知识库” 公众号,下次更新不迷路。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]