文心一言是大模型,支持多种NLP任务,如对话生成、文本摘要、关键词抽取、文本分类等等。本文将介绍如何调用文心一言API接口,以便开发者可以将其集成到他们的应用程序中。
准备工作
- 注册文心一言账号并创建项目。
- 获取项目中API Key和Secret Key。
- 熟悉JSON格式,这是API接口的请求和响应格式。
- 选择合适的编程语言和开发框架。
API接口
文心一言API接口的URL如下:
https://api.baidu.com/api/prediction/v1/text_generate
以下是API接口请求的JSON格式:
json
{
"text": "请输入文本",
"max_tokens": 100,
"top_p": 0.5,
"temperature": 1.0
}
请求参数说明:
- text:待处理的文本。
- maxtokens:最大输出token数量。
- topp:Top-P核采样,概率最高的token被采样的概率。
- temperature:温度参数,温度越高越接近随机采样,温度越低越接近贪婪采样。
以下是API接口响应的JSON格式:
json
{
"generated_text": "输出文本",
"logprobs": [0.1, 0.2, 0.3],
"candidates": [
{
"generated_text": "候选文本1",
"logprobs": [0.4, 0.5, 0.6]
},
{
"generated_text": "候选文本2",
"logprobs": [0.7, 0.8, 0.9]
}
]
}
响应参数说明:
- generatedtext:生成文本。
- logprobs:生成的token的对数概率。
- candidates:候选文本和对应概率,当设置了diversityp参数时才会返回,取candidates列表中最长的text。
调用方式
开发者可以使用多种编程语言和开发框架调用文心一言API接口,以下提供三种常见语言的代码示例:
Pythonimport requests
url = "https://api.baidu.com/api/prediction/v1/text_generate"
params = { "text": "请输入文本", "maxtokens": 100, "topp": 0.5, "temperature": 1.0 }
headers = { "Content-Type": "application/json", "Authorization": "Bearer [API Key]" }
response = requests.post(url, json=params, headers=headers) print(response.json())
JavaScript
const fetch = require("node-fetch");
const url = "https://api.baidu.com/api/prediction/v1/text_generate";
const params = { text: "请输入文本", maxtokens: 100, topp: 0.5, temperature: 1.0 };
const headers = { "Content-Type": "application/json", Authorization:
Bearer [API Key]
, };fetch(url, { method: "POST", headers: headers, body: JSON.stringify(params), }) .then((res) => res.json()) .then((data) => console.log(data)) .catch((error) => console.error("Error:", error));
Java
import com.google.gson.Gson; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response;
public class TextGenerate {
public static void main(String[] args) throws Exception { String apiKey = "[API Key]"; String text = "请输入文本"; int maxTokens = 100; double topP = 0.5; double temperature = 1.0;
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, new Gson().toJson(new TextGenerateRequest(text, maxTokens, topP, temperature)));
Request request = new Request.Builder() .url("https://api.baidu.com/api/prediction/v1/text_generate") .addHeader("Content-Type", "application/json") .addHeader("Authorization", "Bearer " + apiKey) .post(body) .build();
Response response = client.newCall(request).execute(); System.out.println(response.body().string()); }
static class TextGenerateRequest { String text; int maxtokens; double topp; double temperature;
public TextGenerateRequest(String text, int maxtokens, double topp, double temperature) { this.text = text; this.maxtokens = maxtokens; this.topp = topp; this.temperature = temperature; } } }
常见问题
- Q:如何获取API Key和Secret Key?
- A:在文心一言控制台的项目管理页面中,点击「获取密钥」。
<li><strong>Q:如何设置不同的参数?</strong></li><li><strong>A:</strong>请求参数中可以设置max_tokens、top_p、temperature等参数来控制生成文本的长度、概率分布和温度。</li><li><strong>Q:如何处理API调用失败的情况?</strong></li><li><strong>A:</strong>开发者需要捕获HTTP状态码,并根据不同的状态码采取相应的措施,例如重试或显示错误信息。</li><li><strong>Q:文心一言API接口的限制是什么?</strong></li><li><strong>A:</strong>文心一言API接口有调用次数限制,开发者需要根据项目需求合理规划调用量。</li><li><strong>Q:如何获取候选文本?</strong></li><li><strong>A:</strong>需要在请求参数中设置diversity_p参数,候选文本会存储在响应的candidates字段中。</li>