Erniebot SDK 简单使用

2024-06-17 00:09:20 浏览数 (1)

1 基础使用

1.1 多轮对话

代码语言:python代码运行次数:0复制
model = 'ernie-3.5'
messages = [{'role': 'user', 'content': "请问你能以《你好,世界》为题,写⼀⾸现代诗吗?"}]
first_response = erniebot.ChatCompletion.create(
    model=model,
    messages=messages,
)
print(first_response.get_result())
messages.append(first_response.to_message())
messages.append({'role': 'user', 'content': "谢谢你!请问你能把这⾸诗改写成七⾔绝句吗?"})
代码语言:python代码运行次数:0复制
你好,喧嚣⼜静谧的世界, 
你好,早晨的阳光,带来希望的诺⾔。 
我推开窗户,呼吸新鲜的空⽓, 
仿佛听到万物⽣⻓的旋律。 
你好,繁忙的街道,⻋⽔⻢⻰,
你好,孤独的⾏⼈,各⾃怀揣梦想。
我踏上路途,步履匆匆,
在这⼈海中,寻找⾃⼰的⽅向。
你好,书籍的海洋,知识的宝库,
你好,每⼀⻚的字句,传递智慧的⽕种。
我翻开书⻚,如饥似渴,
在墨⾹中,探索未知的宇宙。
你好,⼭川河流,⼤地的⼉⼥,
你好,⻛⾬雷电,⾃然的交响乐团。
我踏上旅途,⾛过千⼭万⽔,
在⼤⾃然的怀抱中,感受⽣命的律动。
你好,亲朋好友,温暖的港湾,
你好,爱⼈的怀抱,甜蜜的避⻛港。
我停下脚步,与你们共度时光,
在爱的滋润中,感受⽣活的甜美。
你好,梦想与希望,未来的灯塔,
你好,挫折与困惑,成⻓的伴侣。
我勇往直前,⽆畏⽆惧,
在追逐梦想的路上,绽放⽣命的光彩。
你好,世界,你是我的舞台,
在这⼴袤的天地,我尽情地歌唱。
⽆论⻛⾬,⽆论坎坷,
我都会以微笑,迎接每⼀个新的挑战。
# 再次执行python simple.py 
宇宙⽆垠浩渺烟,
星⾠闪烁似眸前。
凌晨暗尽曙光现,
⽣命如诗诉世间。
# 再次执行python simple.py 
你好,世界
清晨的阳光,
你好,世界。
空⽓微凉,露⽔晶莹,
我醒来,迎接新的⼀天。
街头巷尾,喧嚣声起,
城市如潮,⼈海如流。
擦肩⽽过,⾯孔匆匆,
我们都是过客,也是主⼈。
⻛轻轻吹过,树叶摇曳,
绿意盎然,⽣机勃勃。
花⼉微笑,⻦⼉欢歌,
⾃然的乐章,悠远⽽和谐。
⾼楼林⽴,灯⽕辉煌,
⼈间烟⽕,温暖如诗。
梦想与现实,交织碰撞,
我们在这⾥,欢笑,哭泣。
⻩昏降临,天空渐暗,
星星闪烁,⽉亮⾼悬。
夜晚的宁静,如梦如幻,
让我们沉淀,思考,感悟。
你好,世界,如此美好,
有时喧嚣,有时宁静。
感谢有你,伴我成⻓,
让我懂得,珍惜每⼀刻。
愿我们都能,热爱这个世界,
⽆论⻛⾬,⽆论坎坷。
因为这⾥,有我们的故事,
有我们的笑,有我们的泪。
清晨醒来世界好,
喧嚣宁静皆相宜。
⼈海如流梦与泪,
珍惜每⼀刻时光。

1.2 语义向量

代码语言:javascript复制
import numpy as np 
response = erniebot.Embedding.create( 
    model='ernie-text-embedding', 
    input=[ 
        "我是百度公司开发的⼈⼯智能语⾔模型,我的中⽂名是⽂⼼⼀⾔,英⽂名是ERNIE-Bot。", 
    ]
)
for embedding in response.get_result():
    embedding = np.array(embedding)
    print(embedding)
代码语言:javascript复制
[ 1.05796956e-01 5.54055907e-02 7.05274269e-02 6.80853873e-02 
 2.19543446e-02 -8.23291615e-02 5.80838742e-03 -3.95872444e-02 
 -6.67352304e-02 6.36451393e-02 2.38892473e-02 -5.38846627e-02 
 -1.38354721e-02 6.17682897e-02 -1.20219052e-01 -1.80966649e-02 
 2.67774030e-03 2.98716705e-02 2.02097371e-02 2.81390417e-02 
 -1.81193538e-02 -1.42875379e-02 -2.74522286e-02 -3.99198793e-02 
 2.82987747e-02 -5.53232767e-02 4.74652238e-02 8.74237940e-02 
 8.49522371e-03 -4.90075152e-04 -3.19835804e-02 -7.75019005e-02 
 3.95072177e-02 -4.12306823e-02 -2.93791015e-02 2.04885248e-02 
 -2.41762819e-03 5.51483557e-02 -2.76580034e-03 -4.78615006e-03 
 -6.95221275e-02 1.82033679e-03 6.79030642e-02 -4.98030446e-02 
 4.57640179e-02 -5.11501618e-02 -8.33012164e-02 4.38632257e-02 
 -7.27836490e-02 -1.50356228e-02 4.07841243e-02 -3.58146569e-03 
 7.91437924e-02 -7.24523962e-02 1.43934460e-02 -5.13507379e-03 
 -5.56587055e-02 -1.04998769e-02 2.27469485e-02 -2.75466628e-02 
 -4.02328148e-02 -3.16361561e-02 5.19508263e-03 -1.08803719e-01 
 1.01775415e-01 2.43589636e-02 3.94213647e-02 1.81834418e-02 
 -1.67791601e-02 1.47812366e-02 4.10323543e-03 4.59933989e-02 
 -8.88352171e-02 9.38988179e-02 1.15360558e-01 4.45992872e-02 
 -4.93527539e-02 2.50529908e-02 -1.24783618e-02 -1.05745741e-03 
 5.53896427e-02 -1.21540688e-02 3.29398215e-02 -2.64890995e-02 
 -5.65348454e-02 4.73656170e-02 -5.08274063e-02 -2.12998204e-02 
 3.03340480e-02 -1.17116421e-03 -8.34121630e-02 -1.44359097e-01 
 4.35920581e-02 -7.42861032e-02 -4.87634651e-02 6.26977533e-02 
 -4.89826165e-02 -6.96981279e-03 4.14343253e-02 -2.13833973e-02 
 -1.53256943e-02 -3.02240215e-02 5.09763397e-02 -5.36648743e-02 
 4.80750650e-02 -6.14303052e-02 -8.61920118e-02 -1.47142649e-01 
 1.28216036e-02 1.99202565e-03 -5.23411259e-02 6.01450205e-02 
 -7.86271691e-03 2.82727033e-02 -8.65496416e-03 3.98108028e-02 
 -6.28771679e-03 -5.05168363e-02 1.60338439e-03 -9.21090841e-02 
 -9.83563885e-02 4.56203260e-02 -4.12734970e-02 7.89025873e-02 
 8.46971106e-03 -2.97649615e-02 -1.05914578e-01 -5.97295724e-03 
 1.85222793e-02 1.24933913e-01 8.96089431e-03 2.24596560e-02 
 -6.27063066e-02 2.11080853e-02 8.20125863e-02 3.21913995e-02 
 -4.45441576e-03 1.06502213e-02 -1.44699905e-02 5.52752912e-02 
4/21 -1.98988654e-02 5.83804138e-02 -6.11526752e-03 -3.06658037e-02 
 2.53539365e-02 2.62746699e-02 -4.70754877e-02 1.09676026e-01 
 -4.20754328e-02 4.63351794e-02 3.69115151e-03 1.46047156e-02 
 -2.23591505e-03 -3.45837958e-02 -5.32594509e-02 -1.81983169e-02 
 2.05144957e-02 -4.00835909e-02 -3.27899754e-02 -2.43276148e-03 
 -4.79984507e-02 -1.08704250e-03 -7.03660846e-02 -1.51871517e-02 
 2.08570994e-02 -8.44927505e-02 -2.58132499e-02 4.30639163e-02 
 3.36906239e-02 -4.37748954e-02 1.33909693e-03 4.81758118e-02 
 7.18222111e-02 -3.71486358e-02 -6.59052059e-02 4.53401767e-02 
 9.22728106e-02 9.50537398e-02 2.28160936e-02 -1.45495860e-02 
 7.87882954e-02 -6.50347993e-02 -1.27899088e-02 4.71387319e-02 
 1.04115466e-02 2.98030749e-02 1.28394021e-02 6.47417307e-02 
 2.86678001e-02 -8.85844380e-02 -4.08285558e-02 9.11005884e-02 
 1.02176555e-01 -1.05631712e-03 5.43922652e-03 5.76323317e-03 
 -6.80931238e-03 -4.48360853e-02 -1.60924867e-02 -5.31150810e-02 
 7.17285722e-02 -4.10918874e-05 3.73796150e-02 1.04598083e-01 
 7.24801943e-02 -2.56096609e-02 7.14072287e-02 2.66870633e-02 
 5.97805753e-02 -2.29491889e-02 1.35155752e-01 -3.87752727e-02 
 -9.93911028e-02 -4.87911329e-03 -2.74928827e-02 1.41570549e-02 
 -3.75559479e-02 -3.32118832e-02 1.00173160e-01 -3.30628874e-03 
 -3.07313167e-04 -8.01729411e-02 4.08987552e-02 1.68337096e-02 
 -2.75139492e-02 -1.37142243e-03 6.08680993e-02 6.78621652e-03 
 6.74144402e-02 -3.14514339e-02 3.61052491e-02 -1.03836469e-01 
 -1.19487848e-02 6.30652979e-02 -7.57822476e-04 4.91176210e-02 
 -2.53641736e-02 -6.86529651e-02 1.17008025e-02 -3.23090591e-02 
 -8.54287222e-02 -2.80731395e-02 1.98654225e-03 -8.57517403e-03 
 7.56616751e-03 -6.09347261e-02 4.75902520e-02 9.53900293e-02 
 -5.60597032e-02 -3.66395861e-02 -4.37575057e-02 -1.56072807e-02 
 -7.80187955e-04 7.58661255e-02 7.43950065e-03 -3.73762697e-02 
 0.00000000e 00 0.00000000e 00 0.00000000e 00 0.00000000e 00 
 0.00000000e 00 0.00000000e 00 0.00000000e 00 0.00000000e 00 
 2.49789312e-01 0.00000000e 00 0.00000000e 00 1.73813768e-03 
 0.00000000e 00 0.00000000e 00 -1.20364074e-02 0.00000000e 00 
 0.00000000e 00 0.00000000e 00 0.00000000e 00 0.00000000e 00 
 0.00000000e 00 0.00000000e 00 1.48895502e-01 0.00000000e 00 
 0.00000000e 00 0.00000000e 00 -2.91786268e-02 0.00000000e 00 
 0.00000000e 00 0.00000000e 00 0.00000000e 00 0.00000000e 00 
 -1.69333875e-01 0.00000000e 00 0.00000000e 00 0.00000000e 00 
 0.00000000e 00 0.00000000e 00 0.00000000e 00 0.00000000e 00 
 0.00000000e 00 1.70734599e-01 0.00000000e 00 0.00000000e 00 
 0.00000000e 00 0.00000000e 00 -1.44376457e-01 0.00000000e 00 
 0.00000000e 00 0.00000000e 00 0.00000000e 00 -1.70605540e-01 
 0.00000000e 00 0.00000000e 00 0.00000000e 00 0.00000000e 00 
 0.00000000e 00 -2.67611220e-02 0.00000000e 00 0.00000000e 00 

2 进阶使用

2.1 通过参数调节响应结果多样性

ERNIE Bot⽀持设定top_p和temperature参数,影响模型在采样过程中的⾏为,进⽽控制模型响应结果的多

样性。通常来说,top_p和temperature参数只需要设置其中⼀个即可。

设置top_p参数可以使⽣成的token从概率和恰好达到或超过top_p的token集合中采样得到。设置top_p参数

时需注意以下几点:

top_p影响⽣成⽂本的多样性,取值越⼤,⽣成⽂本的多样性越强;

top_p的默认取值为0.8,取值范围为[0, 1.0]。

temperature参数也⽤于控制采样的随机性。设置temperature参数需要注意如下⼏点:

较⾼的temperature会使⽣成结果更加随机,⽽较低的数值会使结果更加集中和确定; temperature的默认取值为0.95,取值范围为(0, 1.0],不能为0。

代码语言:python代码运行次数:0复制
# 设置top_p和temperature的例⼦如下: 
response = erniebot.ChatCompletion.create( 
    model='ernie-3.5', 
    messages=[{'role': 'user', 'content': "请帮我制定⼀份深圳⼀⽇游计划”"}], 
    top_p=0.2, 
) 
print(response.get_result()) 
代码语言:python代码运行次数:0复制
深圳⼀⽇游计划
早上: 
* 7:00 - 8:00:早餐。推荐在蛇⼝⽼街享⽤早餐,这⾥有各种美味的⼩吃,如肠粉、⾖浆油条等。 
* 8:30 - 10:30:深圳湾滨海休闲带⻄段散步。这⾥可以欣赏到美丽的海景,吹吹海⻛,享受悠闲的时光。 
中午: 
* 11:00 - 12:30:午餐。回到蛇⼝⽼街,可以在海鲜市场购买新鲜的海鲜,然后找⼀家餐厅加⼯,享受⼀顿 
美味的海鲜⼤餐。 
下午: 
* 13:30 - 15:30:参观深圳博物馆。这⾥可以了解到深圳的历史和⽂化,对深圳有更深⼊的了解。 
* 16:00 - 18:00:游览深圳莲花⼭公园。这⾥可以俯瞰深圳的全景,同时也可以在公园内休息,享受⼤⾃然 
的宁静。 
晚上: 
* 18:30 - 20:00:晚餐。推荐在蛇⼝⽼街附近的餐厅享⽤晚餐,这⾥有很多特⾊⼩吃和美⻝。 
* 20:30 - 22:00:深圳湾公园夜游。在这⾥可以欣赏到深圳湾的夜景,感受深圳的繁华和活⼒。 
以上就是⼀份深圳⼀⽇游的计划,希望对你有所帮助。在游玩的过程中,请注意安全,遵守当地的规章制度,保 
护环境,享受美好的旅⾏时光。
代码语言:javascript复制
深圳⼀⽇游计划 
早上:中英街 
开始您的⼀天之旅,⾸站是中英街。这⾥的⼀街两制特⾊,让您在短时间内就能体验到不同的⽂化氛围。吹吹海 
⻛,和爱⼈漫步街头,感受极致的浪漫。不妨在这⾥拍⼀些美美的照⽚,留下美好的回忆。 
中午:东⻔⽼街美⻝之旅 
午餐时间,带您前往深圳著名的购物和美⻝街区——东⻔⽼街。这⾥有各种特⾊⼩吃和餐厅,如鲜虾云吞、⽜杂、 
煲仔饭等,让您⼤饱⼝福。在这⾥,您可以⼀边品味美⻝,⼀边享受购物的乐趣。 
下午:地王⼤厦观景台 
下午,前往地王⼤厦。登上384⽶⾼的顶层69楼,您可以往南眺望⾹港,向北俯瞰深圳。在这⾥,您可以欣赏到 
深圳市区的美丽⻛光,感受深圳的快速发展。 
晚上:⼤悦城美⻝⼴场 
晚上,带您来到⼤悦城美⻝⼴场。这⾥汇集了各种⼩吃和餐厅,环境⼲净整洁,价格实惠。在这⾥,您可以继续 
品尝深圳的美⻝,感受深圳的夜⽣活。 
晚上:购物休闲 
最后,您可以选择在深圳的各⼤商场或特⾊市场进⾏购物。深圳是⼀个购物的天堂,有许多商场和特⾊市场可以 
满⾜您的购物需求。在这⾥,您可以挑选⼀些⼼仪的商品,作为纪念或礼物。 
这就是您的⼀天深圳之旅。希望这份攻略能帮助您更好地规划⾏程,享受美好的旅⾏时光。祝您旅途愉快!

2.2 流式传输

代码语言:python代码运行次数:0复制
# stream=True 
response_stream = erniebot.ChatCompletion.create( 
    model='ernie-3.5', 
    messages=[{'role': 'user', 'content': "请写⼀篇200字的⽂案,介绍⽂⼼⼀⾔"}],
    stream=True,
)
for response in response_stream:
    print(response.get_result(), end='', flush=True)
print("")

2.3 设定模型行为

erniebot.ChatCompletion.create API的另⼀个有⽤的参数是 system ,该参数可⽤于设定模型的行为,例如给予模型人设或是要求模型以特定格式回答问题。

代码语言:python代码运行次数:0复制
response = erniebot.ChatCompletion.create(
 model='ernie-3.5',
 messages=[{'role': 'user', 'content': "你好呀,和我打个招呼吧"}],
 system="你是⼀个爱笑的智能助⼿,请在每个回答之后添加“哈哈哈”",
)
print(response.get_result())

2.4 函数调用

文心一言提供函数调用功能,模型根据⽤户需求以及对函数的描述确定何时以及如何调⽤函数。借由函数调用,⽤户可以从⼤模型获取结构化数据,进⽽利⽤编程⼿段将⼤模型与已有的内外部API结合以构建应⽤。

文心大模型函数调⽤功能的典型使用流程如下:

1.⽤户提供对⼀组函数的名称、功能、请求参数(输⼊参数)和响应参数(返回值)的描述;

2.模型根据⽤户需求以及函数描述信息,智能确定是否应该调⽤函数、调⽤哪⼀个函数、以及在调⽤该函数

时需要如何设置输⼊参数;

3.⽤户根据模型的提示调⽤函数,并将函数的响应传递给模型;

4.模型综合对话上下⽂信息,以⾃然语⾔形式给出满⾜⽤户需求的回答。

代码语言:python代码运行次数:0复制
import erniebot
# 引⼊json包,⽤于解析⽂⼼返回的JSON格式数据
import json
# 定义使⽤的令牌为aistudio平台的,这是访问⽂⼼⼀⾔API的必要凭证
erniebot.api_type = 'aistudio'

# 引⼊⾃⼰的令牌,该令牌⽤于验证API请求的身份
# 注意:此处的令牌是⼀个示例,实际使⽤时需要替换成⾃⼰的令牌
erniebot.access_token = "********"
info_dict = {
    '李⼩明': {
        'age': 31,
        'email': 'lxm@bidu.com',
        'mbti': 'ESFJ',
        'hobbies': ['健身', '篮球', '游泳', '烹饪'],
 },
    '王刚': {
        'age': 28,
        'email': 'wg123@bidu.com',
        'mbti': 'INTP',
        'hobbies': ['游戏', '⾳乐', '电影', '旅游'],
 },
    '张⼀⼀': {
        'age': 26,
        'email': 'z11@bidu.com',
        'mbti': 'ENTP',
        'hobbies': ['摄影', '美⻝', '桌游', '编程'],
 },
}
def get_friend_info(name, field=None):
    info = info_dict[name]
    if field is not None:
        return {'name': name, field: info[field]}
    else:
        return {'name': name, ** info}
    get_friend_info_desc = {
        'name': 'get_friend_info',
        'description': "获取好友的个⼈信息",
        'parameters': {
            'type': 'object',
            'properties': {
                'name': {
                    'type': 'string',
                    'description': "好友姓名",
                 },
            },
            'field': {
                 'type': 'string',
                 'description': "想要获取的字段名称,如果不指定则返回所有字段",
                     'enum': [
                     'age',
                     'email',
                     'mbti',
                     'hobbies',
                     ],
             },
     },
     'required': ['name', ],
     },
     'responses': {
         'type': 'object',
         'properties': {
             'name': {
                 'type': 'string',
                 'description': "姓名",
             },
             'age': {
                 'type': 'integer',
                 'description': "年龄",
                 'minimum': 0,
             },
             'email': {
                 'type': 'string',
                 'description': "电⼦邮箱地址",
                 'format': 'email',
             },
             'mbti': {
                 'type': 'string',
                 'description': "好友的MBTI⼈格类型",
             },
             'hobbies': {
                 'type': 'array',
                 'description': "兴趣爱好列表",
                 'items': {
                     'type': 'string',
                 },
             },
         },
         'required': ['name', ],
     },
}

def update_email_address(name, email):
     try:
        info = info_dict[name]
        info['email'] = email
     except Exception as e:
        return {'status': False, 'error_message': f"{type(e)}: {str(e)}"}
     else:
         return {'status': True}
         
update_email_address_desc = {
    'name': 'update_email_address',
    'description': "更新好友的电⼦邮箱地址",
    'parameters': {
        'type': 'object',
        'properties': {
            'name': {
                'type': 'string',
                'description': "好友姓名",
             },
            'email': {
                'type': 'string',
                'description': "新的邮箱地址",
             },
         },
         'required': ['name', 'email', ],
     },
     'responses': {
         'type': 'object',
         'properties': {
             'status': {
                 'type': 'boolean',
                 'description': "更新操作是否成功,true表示成功,false表示失败",
             },
             'error_message': {
                 'type': 'string',
                 'description': "更新操作失败原因",
             },
         },
         'required': ['status', ],
     },
}
def send_email(to, content):
    return {'status': True}
send_email_desc = {
    'name': 'send_email',
    'description': "向好友发送邮件",
    'parameters': {
        'type': 'object',
        'properties': {
            'to': {
                'type': 'string',
                'description': "收件⼈姓名",
             },
            'content': {
                'type': 'string',
                'description': "邮件内容",
             }
         },
         'required': ['to', 'content', ]
     },
     'responses': {
         'type': 'object',
         'properties': {
             'status': {
                 'type': 'boolean',
                 'description': "邮件发送状态,true表示成功到达对⽅服务器,false表示发送失败",
             },
         },
     },
}

import json
name2function = {
    'get_friend_info': get_friend_info,
    'update_email_address': update_email_address,
    'send_email': send_email,
}
functions = [
    get_friend_info_desc,
    update_email_address_desc,
    send_email_desc,
    ]
messages = []
def to_pretty_json(obj):
    return json.dumps(obj, ensure_ascii=False, indent=2)
def chat(message, system=None, use_functions=True, auto_func_call=True, _max_recur_depth=3):
     # 当`auto_func_call`参数为True时,根据模型响应⾃动调⽤函数,并将调⽤结果回传给模型
     if isinstance(message, str):
         message = {'role': 'user', 'content': message}
         messages.append(message)
         create_kwargs = {
             'model': 'ernie-3.5',
             'messages': messages,
         }
     if system:
         create_kwargs['system'] = system
     if use_functions:
         create_kwargs['functions'] = functions
         response = erniebot.ChatCompletion.create(**create_kwargs)
     if response.is_function_response:
         # 模型建议调⽤函数
         function_call = response.get_result()
         messages.append(response.to_message())
     if auto_func_call:
         # 从模型响应中解析函数名称和请求参数
         func_name = function_call['name']
     try:
         func = name2function[func_name]
     except KeyError as e:
         raise KeyError(f"函数`{func_name}`不存在") from e
     func_args = function_call['arguments']
     try:
         func_args = json.loads(func_args)
     except json.JSONDecodeError as e:
         raise ValueError(f"⽆法从{repr(func_args)}解析参数") from e
     # 调⽤函数
     if not isinstance(func_args, dict):
         raise TypeError(f"{repr(func_args)}不是字典")
     print(f"【函数调⽤】函数名称:{func_name},请求参数:{to_pretty_json(func_args)}")
     func_res = func(**func_args)
     print(f"【函数调⽤】响应参数:{to_pretty_json(func_res)}")
     # 将函数响应回传给模型
     message = {
        'role': 'function',
        'name': func_name,
        'content': json.dumps(func_res, ensure_ascii=False),
     }
     # 根据允许的最⼤递归层级判断是否应该设置`use_functions`和`auto_func_call`为`False`
     # 这样做主要是为了限制调⽤函数的次数,防⽌⽆限递归
     return chat(
         message, 
         use_functions=(use_functions and _max_recur_depth > 1),
         auto_func_call=(auto_func_call and _max_recur_depth > 1), 
         _max_recur_depth=_max_recur_depth-1,
     )
     else:
         return function_call
     else:
     # 模型返回普通的⽂本消息
     result = response.get_result()
     messages.append(response.to_message())
     return result
    messages = []
    # 为了使模型能够得到更充⾜的提示,我们借助`system`参数对模型说明它需要扮演的⻆⾊以及⼀些注意事项
    system = """
    你是⼀个智能社交助理,能够帮助我查询好友信息、更新好友邮箱地址、发送电⼦邮件以及给出社交建议。
    在我们的对话中,我提到的所有⼈名都是好友的名称。请尽可能使⽤我提供的函数解决问题。
    """
    # 默认进⾏单轮对话,修改传给`range`的数字可进⾏多轮对话
    for _ in range(1):
     result = chat(input("请输⼊:"), system=system)
     print(result)
代码语言:javascript复制
请问李⼩明今年⼏岁?
代码语言:javascript复制
【函数调⽤】函数名称:get_friend_info,请求参数:{
     "name": "李⼩明",
     "field": "age"
}
【函数调⽤】响应参数:{
     "name": "李⼩明",
     "age": 31
}
根据我们的好友信息记录,李⼩明今年31岁。如果您需要更多关于李⼩明的信息或有其他问题,请随时告诉我。
代码语言:javascript复制
张⼀⼀和我说她的邮箱地址换成了zyy@bidu.com,请你帮我更新⼀下。 
请问张⼀⼀的邮箱是多少? 
代码语言:txt复制
实测没更新邮箱

附:⼀⾔插件开发 https://yiyan.baidu.com/developer/doc#oll6a352c

参考:

https://ernie-bot-agent.readthedocs.io/zh-cn/latest/

LLM

0 人点赞