怎么样使用OpenAI的Python API

随着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,按照这里的介绍:

https://platform.openai.com/docs/guides/embeddings/how-can-i-tell-how-many-tokens-a-string-has-before-i-embed-it

可以在嵌入之前先计算一下序列的长度,但文档里并没有说超长了怎么处理,是截断还是直接不处理了呢。另外,使用的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

就先总结这么多。

猜你喜欢

转载自blog.csdn.net/qysh123/article/details/129775342
今日推荐