1.API调用
2.prompt书写
3.生成格式转写
1.API调用
1.1获取api
可从openai官网申请获取或🍑宝购买
也可用azure openai(貌似仅限企业)
我是用的azure,下面以azure进行讲解
主页搜索openai,找你们公司的服务
点进去
找到密钥(key)和终结点(end point)
从这里进入openai studio
找到部署名称(deployment name)
1.2写例子,试试api可否正常调用
先
pip install openai
pip install os
python3.7及以上版本
#Note: The openai-python library support for Azure OpenAI is in preview.
import os
import openai
openai.api_type = "azure"
openai.api_base = os.getenv("AZURE_OPENAI_ENDPOINT") #替换成终结点
openai.api_version = "2023-05-15"
openai.api_key = os.getenv("AZURE_OPENAI_KEY")#替换成你的key
response = openai.ChatCompletion.create(
engine="gpt-35-turbo", # 替换成你们公司的deployment name
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
{"role": "user", "content": "Do other Azure AI services support this too?"}
]
)
print(response)
print(response['choices'][0]['message']['content'])
如果上面OK,那就能调用API了,开始下一步
2.prompt书写
2.1分清system和user
"role": "system"
数组的开头包含系统角色(也称为系统消息)。 此消息提供模型的初始说明。 可以在系统角色中提供各种信息,包括:
- 助手的简要说明
- 助手的个性特征
- 你希望助手遵循的指令或规则
- 模型所需的数据或信息,例如 FAQ 中的相关问题
你可以为用例自定义系统角色,也可以仅包含基本说明。 系统角色/消息是可选的,但建议至少包含一条基本说明,以获得最佳结果。
"role": "user"
在系统角色之后,可以在用户和助手之间加入一系列消息。
{"role": "user", "content": "What is thermodynamics?"}
若要触发模型回复,在用户消息的末尾应提示该轮到助手回复了。 还可以在用户和助手之间加入一系列样本消息,以此进行少样本学习。
2.2例子:
{"role": "system", "content": "Assistant is an intelligent chatbot designed to help users answer their tax related questions.
Instructions:
- Only answer questions related to taxes.
- If you're unsure of an answer, you can say "I don't know" or "I'm not sure" and recommend users go to the IRS website for more information. "},
{"role": "user", "content": "When are my taxes due?"}
根据需要进行书写。推荐课程提示工程指南 | Prompt Engineering Guide
3.生成格式转写
推荐orjson。
orjson是一个JSON库,它可以快速准确地完成Python对象和JSON格式的相互转换,相较于Python原生的JSON库和其他第三方JSON库,orjson的功能更加丰富、效率更高。
特点:
- 可以将datetime、date和time实例序列化为RFC 3339格式,例如:"2022-06-12T00:00:00+00:00"
- 序列化numpy.ndarray实例的速度比其他库快4-12倍,但使用的内存更少,约为其他库的1/3左右
- 输出速度是标准库的10到20倍
- 序列化的结果是bytes类型,而不是str
- 序列化str时,不会将unicode转义为ASCII
- 序列化float的速度是其他库的10倍,反序列化的速度是其他库的两倍
- 可以直接序列化str、int、list和dict的子类
- 不提供load( )和dump( )方法,在原生JSON库中,load( )方法可以把json格式的文件转换成python对象
- orjson支持3.7-3.10所有版本64位的Python,注意32位的 Python 无法使用orjson!
这个写的全