模型接口调用

 
pip install python-dotenv

 
from dotenv import load_dotenv  

# 加载.env文件  
load_dotenv()  
    
# 现在你可以通过os.getenv来获取环境变量了  
import os  
    
my_secret_key = os.getenv("MY_SECRET_KEY")  
print(my_secret_key)

 
确保你的 .env 文件位于你的项目根目录或你指定的目录中,
并且包含了你需要的环境变量,如 MY_SECRET_KEY=some_secret_value。

dotenv

 
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv(filename="env.txt"))
    

流式调用

 
from openai import OpenAI

client = OpenAI()

stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "请使用C语言实现一个数组的数据结构"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")
    

 

    

 
from openai import OpenAI

# 初始化 OpenAI 客户端
client = OpenAI()  # 默认使用环境变量中的 OPENAI_API_KEY 和 OPENAI_BASE_URL
    

 
# 基于 prompt 生成文本
# 默认使用 gpt-3.5-turbo 模型
def get_completion(prompt, response_format="text", model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]    # 将 prompt 作为用户输入
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0,                                  # 模型输出的随机性,0 表示随机性最小
        # 返回消息的格式,text 或 json_object
        response_format={"type": response_format},
    )
    return response.choices[0].message.content          # 返回模型生成的文本

 
print(get_completion("常用的数据结构与算法有哪些"))

 
常用的数据结构包括:

1. 数组(Array)
2. 链表(Linked List)
3. 栈(Stack)
4. 队列(Queue)
5. 树(Tree)
6. 图(Graph)
7. 哈希表(Hash Table)
8. 堆(Heap)

常用的算法包括:

1. 排序算法(如快速排序、归并排序、插入排序、冒泡排序等)
2. 搜索算法(如二分查找、深度优先搜索、广度优先搜索等)
3. 动态规划(Dynamic Programming)
4. 贪心算法(Greedy Algorithm)
5. 回溯算法(Backtracking)
6. 分治算法(Divide and Conquer)
7. 图算法(如最短路径算法、最小生成树算法等)
8. 字符串匹配算法(如KMP算法、Boyer-Moore算法等)

gpt-4o-mini

 
from openai import OpenAI

client = OpenAI()

stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "请使用C语言实现一个数组的数据结构"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

 
当然可以!下面是一个简单的数组数据结构的实现示例,包括基本的功能,如初始化、插入元素、删除元素和打印数组内容。

```c
#include 
#include 

#define MAX_SIZE 100  // 定义数组的最大容量

typedef struct {
    int *data;       // 动态分配的数组
    int size;        // 当前数组大小
    int capacity;    // 数组的最大容量
} Array;

// 初始化数组
Array* createArray(int capacity) {
    Array *arr = (Array*)malloc(sizeof(Array));
    arr->capacity = capacity;
    arr->size = 0;
    arr->data = (int*)malloc(capacity * sizeof(int));
    return arr;
}

// 插入元素
void insert(Array *arr, int element) {
    if (arr->size < arr->capacity) {
        arr->data[arr->size++] = element;
    } else {
        printf("数组已满,无法插入元素 %d\n", element);
    }
}

// 删除元素
void delete(Array *arr, int index) {
    if (index >= 0 && index < arr->size) {
        for (int i = index; i < arr->size - 1; i++) {
            arr->data[i] = arr->data[i + 1];
        }
        arr->size--;
    } else {
        printf("索引越界,无法删除元素\n");
    }
}

// 打印数组
void printArray(Array *arr) {
    printf("数组元素: ");
    for (int i = 0; i < arr->size; i++) {
        printf("%d ", arr->data[i]);
    }
    printf("\n");
}

// 释放数组
void freeArray(Array *arr) {
    free(arr->data);
    free(arr);
}

int main() {
    Array *arr = createArray(MAX_SIZE);

    insert(arr, 10);
    insert(arr, 20);
    insert(arr, 30);
    printArray(arr);

    delete(arr, 1);  // 删除索引为1的元素
    printArray(arr);

    freeArray(arr);
    return 0;
}
```

### 说明:
1. **数据结构**:
    - `Array` 结构体包含指向动态分配内存的指针、当前数组大小和数组最大容量。

2. **功能**:
    - `createArray`:初始化数组。
    - `insert`:在数组末尾插入元素。
    - `delete`:根据索引删除元素。
    - `printArray`:打印数组内容。
    - `freeArray`:释放申请的内存。

3. **主函数**:
    - 创建一个数组,插入一些元素,展示数组内容,删除一个元素,最后输出更新后的数组并释放内存。

你可以运行这个代码并根据需要进行修改或扩展。

 


 


 

  

 


参考