📢 转载信息
原文链接:https://machinelearningmastery.com/10-python-one-liners-for-calling-llms-from-your-code/
原文作者:Shittu Olumide
图片作者
引言
你并不总需要一个沉重的封装库、一个大型客户端类或数十行的样板代码来调用大型语言模型(LLM)。有时,一行精心设计的 Python 代码就能完成所有工作:发送一个提示(prompt),接收一个响应。这种简洁性可以加快原型设计,或在不增加架构开销的情况下将 LLM 调用嵌入到脚本或管道中。
在本文中,你将看到十个调用和与 LLM 交互的 Python 单行代码。我们将涵盖:
- 托管 API: 使用 OpenAI、Anthropic、Google Gemini、Mistral 和 Hugging Face 的示例
- 本地模型: 如何从你的机器调用 Ollama、LM Studio、vLLM
- 技巧与窍门: 流式输出、异步调用、对 Shell 友好的模式
每个代码片段都附有简短的解释和官方文档链接,以便你可以验证底层发生了什么。读完后,你不仅知道如何快速嵌入 LLM 调用,还能理解每种模式何时以及为何有效。
设置
在嵌入单行代码之前,需要准备几件事以确保它们顺利运行:
安装所需的包(只需一次):
pip install openai anthropic google-generativeai requests httpx
确保你的 API 密钥 设置在环境变量中,切勿硬编码到脚本中。例如:
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="claude-yourkey"
export GOOGLE_API_KEY="your_google_key"
对于本地设置(Ollama、LM Studio、vLLM),你需要本地运行模型服务器并监听正确的端口(例如,Ollama 的默认 REST API 运行在 http://localhost:11434)。
所有单行代码都假设你使用了正确的模型名称,并且该模型可通过云端或本地访问。准备就绪后,你可以将每个单行代码直接粘贴到你的 Python REPL 或脚本中,并获得响应,具体取决于配额或本地资源限制。
托管 API 单行代码(云模型)
托管 API 是开始使用大型语言模型的最简单方法。你无需在本地运行模型或担心 GPU 内存;只需安装客户端库、设置 API 密钥,然后发送提示。这些 API 由模型提供商自己维护,因此它们可靠、安全且经常更新。
以下单行代码展示了如何直接从 Python 调用一些最受欢迎的托管模型。每个示例都会向模型发送一个简单的消息并打印生成的响应。
1. OpenAI GPT 聊天补全
OpenAI 的 API 提供了对 GPT-4o 和 GPT-4o-mini 等模型的访问。SDK 负责从身份验证到响应解析的所有事情。
from openai import OpenAI; print(OpenAI().chat.completions.create(model="gpt-4o-mini", messages=[{"role":"user","content":"Explain vector similarity"}]).choices[0].message.content)
作用: 它创建一个客户端,向 GPT-4o-mini 发送消息,并打印模型的回复。
原理: openai
Python 包对 REST API 进行了干净的封装。你只需要将 OPENAI_API_KEY
设置为环境变量即可。
文档: OpenAI 聊天补全 API
2. Anthropic Claude
Anthropic 的 Claude 模型(Claude 3、Claude 3.5 Sonnet 等)以其长上下文窗口和详细推理能力而闻名。它们的 Python SDK 遵循与 OpenAI 类似的聊天消息格式。
from anthropic import Anthropic; print(Anthropic().messages.create(model="claude-3-5-sonnet", messages=[{"role":"user","content":"How does chain of thought prompting work?"}]).content[0].text)
作用: 初始化 Claude 客户端,发送消息,并打印第一个响应块的文本。
原理: .messages.create()
方法使用标准的 role + content 消息模式,返回易于提取的结构化输出。
3. Google Gemini
Google 的 Gemini API(通过 google-generativeai
库)可以轻松地用最少的设置调用多模态和文本模型。关键区别在于 Gemini 的 API 将每个提示视为“内容生成”,无论是文本、代码还是推理。
import os, google.generativeai as genai; genai.configure(api_key=os.getenv("GOOGLE_API_KEY")); print(genai.GenerativeModel("gemini-1.5-flash").generate_content("Describe retrieval-augmented generation").text)
作用: 调用 Gemini 1.5 Flash 模型 来描述检索增强生成(RAG)并打印返回的文本。
原理: GenerativeModel()
设置模型名称,generate_content()
处理提示/响应流程。你只需要配置好 GOOGLE_API_KEY
即可。
4. Mistral AI (REST 请求)
Mistral 提供了一个简单的聊天补全 REST API。你发送一个消息列表并接收一个结构化的 JSON 响应作为回报。
import requests, json; print(requests.post("https://api.mistral.ai/v1/chat/completions", headers={"Authorization":"Bearer YOUR_MISTRAL_API_KEY"}, json={"model":"mistral-tiny","messages":[{"role":"user","content":"Define fine-tuning"}]}).json()["choices"][0]["message"]["content"])
作用: 向 Mistral 的 API 发送聊天请求并打印助手的消息。
原理: 该端点接受类似 OpenAI 的消息数组,并返回 choices -> message -> content
。
查阅 Mistral API 参考和快速入门。
5. Hugging Face 推理 API
如果你在 Hugging Face 上托管模型或使用公共模型,你可以用一个 POST 请求来调用它。text-generation
任务以 JSON 格式返回生成的文本。
import requests; print(requests.post("https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.2", headers={"Authorization":"Bearer YOUR_HF_TOKEN"}, json={"inputs":"Write a haiku about data"}).json()[0]["generated_text"])
作用: 向 Hugging Face 上托管的模型发送提示,并打印生成的文本。
原理: 推理 API 暴露了特定于任务的端点;对于文本生成,它返回一个包含 generated_text
的列表。
文档:推理 API 和文本生成 任务页面。
本地模型单行代码
在本地机器上运行模型可以让你拥有隐私和控制权。你避免了网络延迟,并将数据保留在本地。权衡在于设置:你需要启动服务器并拉取模型。下面的单行代码假设你已经启动了本地服务。
6. Ollama (本地 Llama 3 或 Mistral)
Ollama 在 localhost:11434 上暴露了一个简单的 REST API。使用 /api/generate
进行提示式生成,或使用 /api/chat
进行聊天轮次。
import requests; print(requests.post("http://localhost:11434/api/generate", json={"model":"llama3","prompt":"What is vector search?"}).text)
作用: 向本地 Ollama 服务器发送一个生成请求,并打印原始响应文本。
原理: Ollama 运行一个本地 HTTP 服务器,带有 /api/generate
和 /api/chat
等端点。你必须先运行该应用程序并拉取模型。请参阅官方 API 文档。
7. LM Studio (兼容 OpenAI 的端点)
LM Studio 可以将本地模型置于类似 OpenAI 的端点(如 /v1/chat/completions
)之后。从“开发者”选项卡启动服务器,然后像调用任何兼容 OpenAI 的后端一样调用它。
import requests; print(requests.post("http://localhost:1234/v1/chat/completions", json={"model":"phi-3","messages":[{"role":"user","content":"Explain embeddings"}]}).json()["choices"][0]["message"]["content"])
作用: 调用本地聊天补全并打印消息内容。
原理: LM Studio 暴露了兼容 OpenAI 的路由,并且还支持增强的 API。最近的版本也添加了对 /v1/responses
的支持。如果你的本地构建使用不同的路由,请查阅文档。
8. vLLM (自托管 LLM 服务器)
vLLM 提供了一个高性能服务器,带有兼容 OpenAI 的 API。你可以在本地或 GPU 服务器上运行它,然后调用 /v1/chat/completions
。
import requests; print(requests.post("http://localhost:8000/v1/chat/completions", json={"model":"mistral","messages":[{"role":"user","content":"Give me three LLM optimization tricks"}]}).json()["choices"][0]["message"]["content"])
作用: 向 vLLM 服务器发送聊天请求并打印第一个响应消息。
原理: vLLM 实现了兼容 OpenAI 的聊天和补全 API,因此一旦服务器运行,任何类似 OpenAI 的客户端或纯请求调用都可以工作。请查看 文档。
便捷的技巧与窍门
一旦你了解了向 LLM 发送请求的基础知识,一些巧妙的技巧就能让你的工作流程更快、更顺畅。最后两个示例演示了如何实时流式传输响应以及如何执行异步 API 调用而不会阻塞你的程序。
9. 从 OpenAI 流式传输响应
流式传输允许你打印模型生成的每个 token,而不是等待整个消息。它非常适合交互式应用程序或 CLI 工具,你希望输出立即出现。
from openai import OpenAI; [print(c.choices[0].delta.content or "", end="") for c in OpenAI().chat.completions.create(model="gpt-4o-mini", messages=[{"role":"user","content":"Stream a poem"}], stream=True)]
作用: 向 GPT-4o-mini 发送提示并打印到达的 token,模拟“实时打字”效果。
原理: OpenAI API 中 stream=True
标志会返回部分事件。每个 chunk
包含一个 delta.content
字段,此单行代码会在流式传输时打印它。
文档: OpenAI 流式传输指南。
10. 使用 httpx 进行异步调用
异步调用使你能够在不阻塞应用程序的情况下查询模型,非常适合同时发出多个请求或将 LLM 集成到 Web 服务器中。
import asyncio, httpx; print(asyncio.run(httpx.AsyncClient().post("https://api.mistral.ai/v1/chat/completions", headers={"Authorization":"Bearer TOKEN"}, json={"model":"mistral-tiny","messages":[{"role":"user","content":"Hello"}]})).json()["choices"][0]["message"]["content"])
作用: 异步向 Mistral 的 API 发送聊天请求,然后打印模型的回复(一旦完成)。
原理: httpx
库支持异步 I/O,因此网络调用不会阻塞主线程。这种模式非常适合脚本或应用程序中的轻量级并发。
文档: 异步支持。
总结
这些单行代码不仅仅是快速演示;它们是构建块。你可以将它们中的任何一个变成一个函数,将其包装到命令行工具中,或者构建到后端服务中。相同的单行代码在添加错误处理、缓存或日志记录后,可以轻松地扩展到生产工作流中。
如果你想进一步探索,请查阅官方文档,了解 temperature、max tokens 和 streaming options 等详细参数。每个提供商都维护着可靠的参考资料:
- OpenAI API 参考
- Anthropic API 文档
- Google Gemini 开发者文档
- Mistral API 参考
- Hugging Face 推理 API
- Ollama API 文档
- LM Studio API 参考
- vLLM REST API
真正的收获是 Python 使处理 LLM 变得既易于访问又灵活。无论你是在云端运行 GPT-4o 还是在本地运行 Llama 3,只需几行代码即可达到生产级的效果。
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。
评论区