随着ChatGPT和GPT-4等的火爆,相信很多朋友也都想试试Open AI的API,这里我简单介绍一下:
搜索“openai api”,可以看到下面几个网页:
OpenAI API:这里只是简单介绍了一下API的目的和他们的一些考虑;
https://platform.openai.com/docs/introduction:这里是OpenAi docs的整体介绍;
https://platform.openai.com/docs/api-reference:这个页面就更有针对性一些,介绍了怎么在Python和Node.js中使用API。
首先:
pip install openai
其次,如果在刚才第一个页面中点Sign up,然后登录,在右上角自己用户名的图标点一下,可以看到有“View API keys”,然后就可以创建或者使用自己已有的API key了。有趣的是,生成了的API key,第二次在网站上也看不到字符串了。
接下来就可以写一些简单的测试代码了:
import openai
openai.api_key="OPENAI_API_KEY"
print(openai.Model.list())
这样就会列出所有的model名字,不过大家应该注意,每一次API调用都是要收钱的,我也不知道打印个list需要收钱不,保险起见,不运行也可以。
在Pricing这个页面里可以看到不同模型的价格:Pricing
这里对目前的model进行了介绍:https://platform.openai.com/docs/models
例如我对这里的embedding比较感兴趣,在这里:https://platform.openai.com/docs/guides/embeddings有对embedding model的介绍(不得不说,OpenAI这doc写得真烂,乱七八糟的)
推荐使用的是下面这个model:
Model name | tokenizer | max input tokens | output dimensions |
---|---|---|---|
text-embedding-ada-002 | cl100k_base | 8191 | 1536 |
可以看到,输入序列的最大token个数是8191,按照这里的介绍:
可以在嵌入之前先计算一下序列的长度,但文档里并没有说超长了怎么处理,是截断还是直接不处理了呢。另外,使用的tokenizer是tiktoken,具体的编码方式是cl100k_base:
For second-generation embedding models like text-embedding-ada-002
, use the cl100k_base
encoding.
综合https://platform.openai.com/docs/guides/embeddings/use-cases和上面这个网页的例子,可以试一个简单的例子:
import openai
import tiktoken
def num_tokens_from_string(string: str, encoding_name: str) -> int:
"""Returns the number of tokens in a text string."""
encoding = tiktoken.get_encoding(encoding_name)
num_tokens = len(encoding.encode(string))
return num_tokens
openai.api_key = "OPENAI_API_KEY"
embedding_test = "Let spend some money to test the embedding model"
num_tokens = num_tokens_from_string(embedding_test, "cl100k_base")
print(num_tokens)
response_embedding=openai.Embedding.create(input = [num_tokens], model="text-embedding-ada-002")['data'][0]['embedding']
print(response_embedding)
当然,这里只是最简单的使用方法,具体也可以参考:openai-cookbook/Obtain_dataset.ipynb at main · openai/openai-cookbook · GitHub
就先总结这么多。