> For the complete documentation index, see [llms.txt](https://iruca.gitbook.io/ope.ai-pod/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://iruca.gitbook.io/ope.ai-pod/features/text-generation-wen-ben-sheng-cheng-gong-neng.md).

# Text generation文本生成功能

重要：apiKey需要申请。

使用 OpenAI 提供的 `Chat.Completion.create` 方法来与模型进行交互，发送请求并获得响应。

Python调用的例子： 下例为使用openai的api通过gpt-4o模型生成一个关于递归编程的俳句。

```bash
pip install openai
```

```python
from openai import OpenAI

apiKey  = "KEY"
baseURL = "https://testpod.ope.ai/v1"

client = OpenAI(api_key=apiKey, base_url=baseURL)
completion = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {
            "role": "user",
            "content": "Write a haiku about recursion in programming."
        }
    ]
)

print(completion.choices[0].message)        
```

1. `OpenAI（api_key，base_url）`

`apiKey`和`baseURL`分别是从openai获取的用于身份验证的api密钥，和用于与远程模型进行交互的API url。**如果有需要apiKey可以另外申请。**&#x4F7F;用`OpenAI（api_key，base_url）`方法将上面的密钥和url赋予给openai，使后续的api请求携带该密钥进行认证，同时与该url进行远程交互。<br>

2. `client.chat.completions.create`

该方法用于在客户端（client）生成一个completion（文本生成）请求。代码中的`client`是创建的客户端对象`chat`指代openai api中与聊天模型相关的功能`model`指定要使用的模型版本，这里选择了 `gpt-4o`模型，可以选择的模型有

```python
    model="gpt-4o",
    model="glm-4",
```

·`messages`是一个列表，包含与模型交互的消息，每条消息由两部分组成：`role`：角色，可能的值为：  `system`：系统消息，设定模型的行为，可以设定模型的语气和角色。   `user`：用户的输入消息。  `assistant`：模型的输出消息，即回答。  `content`：消息的实际内容。这段代码中，有两条消息：第一条是系统消息，设定模型是一个“有帮助的助手”。第二条是用户信息，用户希望模型生成一个有关于递归编程的俳句。

```python
messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {
            "role": "user",
            "content": "Write a haiku about recursion in programming."
        }
    ]
```

3. `print(completion['choices'][0]['message']['content'])`

这行代码用于打印生成的结果。`completion` 是模型返回的响应对象，它是一个字典结构，其中：  `choices`：包含生成结果的列表，每个元素代表模型的一个输出。  `[0]`：选择列表中的第一个输出（如果你只请求了一个回复，它通常是第一个）。  `['message']`：该条 `choice` 中包含的消息内容。  `['content']`：该消息的实际文本内容，即模型生成的文本。通过 `completion['choices'][0]['message']['content']`，你可以提取出模型生成的俳句文本，并将其打印出来。\
返回的例子：

```bash
ChatCompletionMessage(content='Code calls itself forth,  \nEndless loop in nested seas—  \nFractal thoughts in lines.', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None)
```

`Code calls itself forth`

`Endless loop in nested seas`

`Fractal thoughts in lines`

Curl调用的例子：

```python
curl "https://testpod.ope.ai/v1/chat/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -d '{
        "model": "gpt-4o",
        "messages": [
            {
                "role": "system",
                "content": "You are a helpful assistant."
            },
            {
                "role": "user",
                "content": "Write a haiku about recursion in programming."
            }
        ]
    }'
```
