为了完成前期准备中的任务三:实现简历模板生成(具体参考项目概述:山东大学项目实训:智能简历平台Plus——项目概述-CSDN博客),参考了很多的项目和教程,一开始打算做一个openai的api接口来实现对简历内容的润色,但由于openai账号的原因无法使用,所以最后选择国内的百度智能云千帆大模型获得api接口。
千帆大模型平台提供了丰富的API能力,选择适合的api接口也是一个问题,倾向于选择对话类模型来更好地实现文本的润色。
(百度智能云千帆大模型里面的一小部分模型)
考虑到我们使用的功能仅限于对简历文本的润色以及价格原因(大学生懂得都懂),所以以轻量化、性能和速度较好的ERNIE-Tiny-8K模型作为最终选择。
之后问题就集中于api接口到底怎么调用
我在获得Access_Token的时候偶然发现了百度智能云控制台里面一个巨好用的调试平台(不是广子),选择你需要的模型,自动填写你的client_id、client_secret等信息,然后可以手动调节参数来进行模型的微调,还可以选择各种编程语言,可以生成示例代码!!!我就是根据示例代码知道api接口咋调用的。
然后就真正进入代码实现
由于后期要与其他同学的进度同步,所以我将输入和输出进行封装,也方便后期格式的转换。
def get_user_input():
try:
# 使用input()函数获取用户输入
user_input = input("扩写:")
return user_input
except Exception as e:
print("获取用户输入时出错:", e)
return None
def get_response(user_input, url, headers):
payload = json.dumps({
"messages": [
{
"role": "user",
"content": user_input
}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
# 将响应文本解析为 JSON 格式
response_json = json.loads(response.text)
# 获取 "result" 字段的内容
if "result" in response_json:
return response_json["result"]
# result_text = response_json["result"]
# 提取引号内的内容并分行输出
# quoted_texts = extract_quoted_text(result_text)
# for text in quoted_texts:
# print(text)
else:
print("您的输入不符合要求")
return []
模型调用后的输出一般会给出一些建议或者一些我们用不到的话,我本来是想使用正则表达式匹配所有引号内的内容,然后进行输出,但是无法预料到模型的输出格式,所以增加了输入条件来实现输出格式的要求。
在常用的app或者网页中如果生成的内容不合使用者的心意,可以选择“换一个”按钮进行重新生成,考虑到这一点,我在生成结束后添加一个对答案是否满意的选择,如果选择y则可以退出,n则重新生成一个扩写,知道生成满意的答案。
continue_generating = True
while continue_generating:
#user_input = "扩写直接使用在简历中的话,直接给出内容不用给出建议:"+get_user_input()
#print(user_input)
print(get_response(user_input, url, headers))
# 询问用户是否继续
continue_input = input("答案是否满意?(y/n): ")
if continue_input.lower() == 'y':
continue_generating = False
elif continue_input.lower() == 'n':
continue_generating = True
else:
print("无效的输入,请输入 'y' 或 'n'。")
continue_generating = True
总体来说,结果还是可以的。