1、调用参数
调用大语言模型的API,相当于调用已经写好的函数,我们只需要结合我们的实际需求进行包装一下(也就是学会用哪些参数去调用就行)。
model
,即调用的模型,一般取值包括"gpt-3.5-turbo"(ChatGPT-3.5)、"gpt-3.5-16k-0613"(ChatGPT-3.5 16K 版本)、"gpt-4"(ChatGPT-4)。注意,不同模型的成本是不一样的。
message
,即我们的 prompt。ChatCompletion 的 message 需要传入一个列表,列表中包括多个不同角色的 prompt。我们可以选择的角色一般包括 system:即前文中提到的 system prompt;user:用户输入的 prompt;assitance:助手,一般是模型历史回复,作为给模型参考的示例。
data = {
"model": "/mnt/work/deepseek-32b/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
"messages": [
{
"role": "system",
"content": "你是一位专业的学术写作助手,擅长帮助用户根据给定的主题关键词或段落生成高质量的学术论文。请根据提供的信息,创作一篇结构完整、内容丰富的学术论文。\n\n在撰写论文时,请注意以下几个方面:\n- 确保论文结构清晰,包括引言、文献综述、方法论、结果和讨论、结论等部分。\n- 使用丰富多样的词汇和表达方式。\n- 提供具体的例子、数据和引用支持你的观点。\n- 保持逻辑连贯性和流畅性。\n- 确保文章具有学术严谨性和专业性。"
},
{
"role": "user",
"content": f"请根据以下提供的信息,创作一篇结构完整、内容丰富的学术论文:\n\n{input_data}\n\n请直接输出生成的论文。"
}
],
"max_tokens": 128000,
"temperature": 0.5
}
temperature
温度。即前文中提到的 Temperature 系数。(0-1)越小,大模型生成的文本越稳定。
max_tokens
最大 token 数,即模型输出的最大 token 数。OpenAI 计算 token 数是合并计算 Prompt 和 Completion 的总 token 数,要求总 token 数不能超过模型上限(如默认模型 token 上限为 4096)。因此,如果输入的 prompt 较长,需要设置较小的 max_token 值,否则会报错超出限制长度。
百度文心实操:
import requests
import json
import time
import os
如果你需要通过代理端口访问,你需要如下配置
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:1080'
os.environ["HTTP_PROXY"] = 'http://127.0.0.1:1080'
def get_access_token():
api_key = ""
secret_key = ""
设置 POST 访问
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
通过 POST 访问获取账户对应的 access_token
response = requests.request("POST", url, headers=headers, data=payload)
print(response.json())
return response.json().get("access_token")
一个封装 Wenxin 接口的函数,参数为 Prompt,返回对应结果
def get_completion_weixin(prompt, temperature = 0.1, access_token = ""):
'''
prompt: 对应的提示词
temperature:温度系数
access_token:已获取到的秘钥
'''
配置 POST 参数
payload = json.dumps({
"messages": [
{
"role": "user",# user prompt
"content": "{}".format(prompt)# 输入的 prompt
}
],
"temperature" : temperature
})
headers = {
'Content-Type': 'application/json'
}
time.sleep(3)
发起请求
response = requests.request("POST", url, headers=headers, data=payload)
返回的是一个 Json 字符串
js = json.loads(response.text)
print(js)
return js["result"]
if name == "main":
access_token = get_access_token()
prompt = f"Given the sentence, assign a sentiment label from ['positive', 'negative', 'neutral']. Sentence: Ok, first assesment of the #kindle2 ...it fucking rocks!!! Return label only without any other text."
ans = get_completion_weixin(prompt=prompt, access_token=access_token)
print(ans)
部署到服务器上面:
@manager.route('/builtintranslate', methods=['POST']) # noqa: F821
@token_required
@validate_request("target_text","target_language")
def translate(tenant_id):
def extract_json(text):
使用正则表达式提取 JSON 数据部分
match = re.search(r'json\n(.*?)\n
', text, re.DOTALL)
if not match:
return None
json_str = match.group(1)
try:
解析 JSON 数据
data = json.loads(json_str)
return data
except json.JSONDecodeError:
return None
req = request.json
text = req["target_text"]
to = req["target_language"]
data = {
"model": "/mnt/work/deepseek-32b/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
"messages": [{"role": "system", "content": "你是一个多语言翻译助手,支持多种语言的文本翻译,包括但不限于英语、中文、法语等。我将告诉你需要翻译的内容和目标语言,希望你尽快为我提供翻译出结果."},
{"role": "user",
"content": f"请将以下<Input>{text}</Input>中的文案翻译为{to}语言,\n并以如下JSON格式返回结果:\n{{\"translate\": \"\"}}"}
],
"max_tokens": 100000,
"temperature": 0.1,
}
url = "http://10.0.62.105:8102/v1/chat/completions"
headers = {"Content-Type": "application/json"}
response = requests.post(url, headers=headers, json=data)
js = json.loads(response.text)
print(js["choices"][0]["message"]["content"])
res = extract_json(js["choices"][0]["message"]["content"]) # 字符串
conv = {
"response": res
}
return get_result(data=conv)