一、背景

当前LLM大模型生成式AI,通过网页对话提问方式给予交互和回答,对于个人用于解决问题够用了,但是对于复杂业务处理、批量处理、以及想要集成到项目工程时则需要进行代码方式进行API调用。例如批处理某些文件,针对某个函数生成测试用例,对某个函数做代码review分析等。

二、原理

API调用有openai的API方式和request api两种方式,openAI的API是一种各厂商统一的API调用格式,而request方式则是模拟用户网页输入,构造http请求的方式进行交互,非统一标准,和爬虫的机制类似,都是脚本代替人工输入,进行自动化处理,API key是校验码,和爬虫中使用的token作用类似,一般模型厂商会提供代码示例。

  • openAI API
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="")

需要先安装openai的python库

pip install --upgrade openai
  • request 方式

不同厂商标准不一样,以下是nvidia的方式,代码其实都非常简单。使用时仅需执行如下操作:

  1. 替换API key
  1. 填充提示词content
import requests, base64

invoke_url = "https://integrate.api.nvidia.com/v1/chat/completions"
stream = False


headers = {
  "Authorization": "Bearer $API_KEY_REQUIRED",
  "Accept": "text/event-stream" if stream else "application/json"
}

payload = {
  "model": "meta/llama-4-maverick-17b-128e-instruct",
  "messages": [{"role":"user","content":""}],
  "max_tokens": 512,
  "temperature": 1.00,
  "top_p": 1.00,
  "frequency_penalty": 0.00,
  "presence_penalty": 0.00,
  "stream": stream
}

response = requests.post(invoke_url, headers=headers, json=payload)

if stream:
    for line in response.iter_lines():
        if line:
            print(line.decode("utf-8"))
else:
    print(response.json())

三、NVIDIA API调用教程

网页:https://build.nvidia.com/explore/discover

新用户有1000次免费次数。

第一步:注册账号

网页如下,点击Get API Key时会提示注册账号,通过邮箱注册账号,设置密码,然后进行verify校验电话号码。

注意需要verify,verify后才可以获取API key。
在这里插入图片描述

第二步:生成API KEY

此时再次点击Get API Key,会生成key,total值会变成1。
在这里插入图片描述

第三步:代码示例

点击view code会有一些demo代码示例,当前提供了如下几种模型,llaMA、deepseek、千问模型。

在这里插入图片描述

测试验证,如下代码(替换API KEY后执行)

import requests, base64

invoke_url = "https://integrate.api.nvidia.com/v1/chat/completions"
stream = False


headers = {
  #替换API KEY
  "Authorization": "$API_KEY",
  "Accept": "text/event-stream" if stream else "application/json"
}

payload = {
  "model": "meta/llama-4-maverick-17b-128e-instruct",
  "messages": [{"role":"user","content":""}],
  "max_tokens": 512,
  "temperature": 1.00,
  "top_p": 1.00,
  "frequency_penalty": 0.00,
  "presence_penalty": 0.00,
  "stream": stream
}

response = requests.post(invoke_url, headers=headers, json=payload)

if stream:
    for line in response.iter_lines():
        if line:
            print(line.decode("utf-8"))
else:
    print(response.json())

上述代码片段,可以正常输出内容,有response结果如下,说明可以正常访问。
在这里插入图片描述

第四步:实战旅游推荐

生成一份旅游攻略,提示词如下,以及返回结果如下:

"messages": [{"role":"user","content":"10.1想去阳朔旅游3天,请帮我生成一份旅游攻略,包括景点、美食等"}],
E:\AI学习\2_LLM_云端API调用>python llm_nvinda.py
{'id': 'chatcmpl-1a869ab90b454bc8be56cc6219b17c67', 'object': 'chat.completion', 'created': 1758411891, 'model': 'meta/llama-4-maverick-17b-128e-instruct', 'choices': [{'index': 0, 'message': {'role': 'assistant', 'content': '### 10.1阳朔3日游旅游攻略\n\n#### 第一天\n\n1. **早上:西街**\n   - 到达阳朔后,首先逛逛著名的西街。西街是阳朔的中心,汇集了各
种特色小吃、土特产店和纪念品店。你可以在这里品尝当地的美食,购买一些纪念品。\n\n2. **下午:漓江精华游**\n   - 参加漓江精华游,乘船沿漓江而下,欣赏两岸的秀丽风光。途经兴坪、渔村
等著名景点,感受“桂林山水甲天下,阳朔山水甲桂林”的美誉。\n\n3. **晚上:夜游阳朔**\n   - 晚上,可以选择观看《印象刘三姐》大型山水实景演出,体验刘三姐的浪漫故事。演出结束后,沿
着江边散步,欣赏夜间的阳朔风光。\n\n#### 第二天\n\n1. **早上:遇龙河漂流**\n   - 前往遇龙河,体验漂流的乐趣。遇龙河是漓江的支流,河道蜿蜒,两岸风景秀丽,是放松休闲的好去处。\n\
n2. **中午:金宝村**\n   - 在金宝村享用午餐,品尝农家饭菜。金宝村是阳朔的一个典型农村,可以体验当地的民俗风情。\n\n3. **下午:十里画廊**\n   - 骑自行车或步行于十里画廊,欣赏沿
途的田园风光。十里画廊是一条长约6公里的风景带,路边有许多景点和农家乐。\n\n4. **晚上:阳朔啤酒鱼**\n   - 晚餐尝试阳朔的特色美食——啤酒鱼。这是一道非常有名的当地菜肴,口味独特
,值得一试。\n\n#### 第三天\n\n1. **早上:月亮山和蝴蝶泉**\n   - 游览月亮山,攀登到山顶,可以俯瞰周围的美丽景色。再前往蝴蝶泉,欣赏清澈的泉水和众多的蝴蝶。\n\n2. **中午:高寨村
**\n   - 在高寨村享用午餐,体验农家', 'refusal': None, 'annotations': None, 'audio': None, 'function_call': None, 'tool_calls': [], 'reasoning_content': None}, 'logprobs': None
E:\AI学习\2_LLM_云端API调用> 'stop_reason': None}], 'service_tier': None, 'system_fingerprint': None, 'usage': {'prompt_tokens': 102, 'total_tokens': 614, 'completion_tokens':
512, 'prompt_tokens_details': None}, 'prompt_logprobs': None, 'kv_transfer_params': None}

可以切换模型进行测试使用,API调用方式一样。

四、参考资料

https://zhuanlan.zhihu.com/p/703523223

https://docs.pingcode.com/baike/2702577

https://zhuanlan.zhihu.com/p/682480006

Logo

更多推荐