MyChat

需要先启动本地ollama

 
llm@ii:~$ ./bin/ollama.sh
llm@ii:~$ ollama list
    

 
from tpf.llm import MyChat
chat = MyChat(env_file="env.txt")

query = "你好,讲个笑话"
res = chat.ollama(prompt_user=query)
    

 
{'query': '你好,讲个笑话',
'result': '有一天,一只猫和一只狗在讨论谁更聪明。猫说:‘当然我更聪明,我会捉老鼠,还会在高处优雅地着陆。’狗反驳道:‘那又怎样?我每天都能准确无误地把报纸叼回来,还能在主人回家时热情迎接。’突然,一只鸟飞过来插话:‘你们都太自以为是了,我每天都能找到食物,还能飞翔在天空中,这才是真正的聪明!’猫和狗听了,互相看了看,然后一起说:‘好吧,你赢了,但我们还是更喜欢捉老鼠和叼报纸。’',
'thinking': ['用户希望听一个笑话。',
    '需要选择一个适合的主题,动物之间的对话通常比较有趣。',
    '考虑使用猫、狗和鸟这三个角色,因为它们都有各自的特点和互动可能。',
    '设计一个轻松幽默的情节,突出每个角色的特长,同时制造一些有趣的对比和冲突。',
    '确保笑话有开头、发展和结尾,让故事完整且引人发笑。']}

 
res = chat.ollama(prompt_user=query,temperature=1)

 
res = chat.ollama(prompt_user=query,model=["DeepSeek-R1-14B-Q8:latest","DeepSeek-R1-14B-F16:latest","DeepSeek-R1-32B-Q6:latest","DeepSeek-R1-32B-Q8:latest"])
    

 
query = "你好,讲个笑话"
res = chat.ollama(prompt_user=query,
                    model=["DeepSeek-R1-32B-Q8:latest","DeepSeek-R1-32B-Q6:latest","DeepSeek-R1-14B-F16:latest","DeepSeek-R1-14B-Q8:latest"],
                    temperature=1)
res
    
{'query': '你好,讲个笑话',
 'result': '为什么电脑总是感冒?因为它窗户(Windows)太多! 😄',
 'thinking': ['用户要求讲一个笑话。',
  '需要选择一个适合的笑话,既有趣又不冒犯人。',
  '考虑到技术相关的话题可能更贴近用户的兴趣,选择了一个关于电脑和Windows操作系统的笑话。',
  '确保笑话简洁易懂,并带有合适的表情符号以增加亲和力。']}

 
prompt = "当前文件'.'的绝对路径是什么?" 
response = chat.func_call(query=prompt, 
                            model_list=["gpt-4o-mini","gpt-4o",'DeepSeek-R1-14B-Q8:latest','DeepSeek-R1-14B-F16:latest'], 
                            func_index=3, answer_index=2 )

print(response)
    

 
answer_index
- 只能指定本地ollama模型

func_index
- 并没有限制
    

指定Ollama地址

 
prompt = "当前文件'.'的绝对路径是什么?" 
response = chat.func_call(query=prompt, 
                model_list=["gpt-4o-mini","gpt-4o",'DeepSeek-R1-14B-Q8:latest','DeepSeek-R1-14B-F16:latest'], 
                func_index=3, answer_index=2,base_url='http://localhost:11434/v1/' )

print(response)
    

但本地模型能力没有线上模型强,不是每次都能给出正确的结果

 
```json
{
    "query": "当前文件'.'的绝对路径是什么?",
    "result": "/mnt/g/wks/aiwks/bigmodel/kejian/day03_func_call"
}
```

    

 
from tpf.llm import MyChat
chat = MyChat(env_file="env.txt")

 
query="你好"
res = chat.deepseek(prompt_user=query)
res
{'query': '你好', 'result': '你好!有什么我可以帮助你的吗?', 'thinking': []}

设置本地模型后,可自动判断输入的模型是本地的还是线上的

 
chat.set_local_model(['DeepSeek-R1-14B-Q8:latest','DeepSeek-R1-14B-F16:latest'])
chat.get_local_model()
['DeepSeek-14B-Q8:latest',
    'DeepSeek-R1-14B-Q8:latest',
    'DeepSeek-R1-14B-F16:latest',
    'DeepSeek-R1-14B-Q8:latest',
    'DeepSeek-R1-14B-F16:latest']
     
    

 
query="讲个笑话"
res = chat.deepseek(prompt_user=query,
    prompt_system=None,
    models=['deepseek-chat', 'deepseek-reasoner'],
    temperature=1,
    return_json=True,)

res
{'query': '讲个笑话',
 'result': '有一天,小明问老师:“老师,您知道为什么鱼不会说话吗?”老师摇摇头。小明笑着说:“因为它们都在水里,一开口就全是泡泡!”',
 'thinking': ['1. 理解用户请求:用户希望听到一个幽默的笑话。',
  '2. 回忆或构思一个简短、易懂且适合大众的笑话。',
  '3. 选择了一个关于鱼和泡泡的经典笑话,因为它简单有趣且容易理解。',
  '4. 检查笑话是否合适,确保没有冒犯性或敏感内容。',
  '5. 将笑话格式化并准备输出。']}
    

 
query="讲个笑话"
res = chat.deepseek(prompt_user=query,temperature=0.5)

res
{'query': '讲个笑话',
 'result': '有一天,小明问老师:“老师,为什么我们要学数学呢?”老师回答:“因为数学能让我们变得更聪明。”小明想了想说:“那为什么我们要学语文呢?”老师笑着说:“因为语文能让我们把数学题解释得更清楚。”',
 'thinking': ['理解用户需求:用户希望听到一个笑话。',
  '回忆或构思一个适合的笑话。',
  '选择一个既幽默又适合广泛受众的笑话。',
  '确保笑话内容健康、无冒犯性。',
  '组织语言,简洁明了地表达笑话。']}
    

 


 
from tpf.llm import MyChat
chat = MyChat(env_file="env.txt")

prompt = "当前文件'.'的绝对路径是什么?" 
res = chat.deepseek_func_call(query=prompt)

res
{'query': "当前文件'.'的绝对路径是什么?",
'result': '/mnt/g/wks/aiwks/bigmodel/kejian/day03_func_call',
'thinking': []}


 
prompt = "当前文件'.'的绝对路径是什么?" 
res = chat.deepseek_func_call(query=prompt,
    model_list=['deepseek-chat', 'deepseek-reasoner'],
    func_index=0)

res
{'query': "当前文件'.'的绝对路径是什么?",
 'result': '/mnt/g/wks/aiwks/bigmodel/kejian/day03_func_call',
 'thinking': []}

 
----------------------------------------------------------------------------------------- 

 
from tpf.llm import MyChat
chat = MyChat(env_file="env.txt")

query="请介绍一些学习算法的方法与技巧"
chat.openai(prompt_user=query)

 
学习算法的方法与技巧可以包括:

1. **理论学习**:
    - 阅读经典算法和数据结构的教科书,如《算法导论》。
    - 关注在线课程和讲座,获取视觉和听觉的学习体验。

2. **编码实践**:
    - 在LeetCode、HackerRank等在线平台上解决算法问题,以提高编码能力。
    - 参与编程比赛来挑战自我。

3. **项目应用**:
    - 在实际项目中应用算法,解决具体问题,积累经验。
    - 贡献开源项目,观察他人解决问题的方法。

4. **讨论与交流**:
    - 参与算法相关的社区,如Reddit或GitHub上的讨论区。
    - 加入或者组织读书会,与同伴交流学习体会。

5. **复盘与总结**:
    - 定期总结自己的学习过程和心得,形成自己的学习笔记。
    - 制作知识图或思维导图帮助记忆和理解。

6. **动手实现**:
    - 自己实现经典算法,理解其背后的思想而不仅仅是使用现成的库。
    - 持续进行代码优化,提高算法效率。

通过这些方法,可以有效提升自己在算法方面的能力。


 
query="你好"
chat.openai(prompt_user=query,
    prompt_system=None,
    models=['gpt-4o', 'o1-mini-2024-09-12'],
    temperature=1,
    return_json=True,)
  

 
{'query': '你好',
'result': '你好!请问有什么我可以帮助你的吗?',
'thinking': ['识别用户问候的意图。', '构建一个友好的问候回应。', '确保回应开放,以便用户继续提问。']}

 


 


 
from tpf.llm import MyChat
chat = MyChat(env_file="env.txt")

prompt = "当前文件'.'的绝对路径是什么?" 
chat.openai_func_call(query=prompt)

 
{'query': "当前文件'.'的绝对路径是什么?",
 'result': '/mnt/g/wks/aiwks/bigmodel/kejian/day03_func_call',
 'thinking': ["用户询问当前文件'.'的绝对路径。",
  '调用了get_abs_path函数来获取文件的绝对路径。',
  "函数返回了绝对路径'/mnt/g/wks/aiwks/bigmodel/kejian/day03_func_call'。"]}

 
prompt = "当前文件'.'的绝对路径是什么?" 
res = chat.openai_func_call(query=prompt, 
                            model_list=["gpt-4o-mini","gpt-4o",'DeepSeek-R1-14B-Q8:latest','DeepSeek-R1-14B-F16:latest'], 
                            func_index=0)
print(res)

 
prompt = "当前文件'.'的绝对路径是什么?" 
chat.openai_func_call(query=prompt, 
                            model_list=["gpt-4o-mini","gpt-4o",'DeepSeek-R1-14B-Q8:latest','DeepSeek-R1-14B-F16:latest'], 
                            func_index=0, answer_index=0)

 
prompt = "当前文件'.'的绝对路径是什么?" 
chat.openai_func_call(query=prompt, 
                            model_list=["gpt-4o-mini","gpt-4o",'DeepSeek-R1-14B-Q8:latest','DeepSeek-R1-14B-F16:latest'], 
                            func_index=0, answer_index=2)

 


 


 
from tpf.llm import MyChat
chat = MyChat(env_file="env.txt")

prompt = "当前文件'.'的绝对路径是什么?" 
chat.tongyi_func_call(query=prompt)

 
{'query': "当前文件'.'的绝对路径是什么?",
'result': "当前文件'.'的绝对路径是/mnt/d/wks/aiwks/bigmodel/kejian/day03_func_call/mychat"}

 


 
from tpf.llm import MyChat
chat = MyChat(env_file="env.txt")

prompt = "当前文件'.'的绝对路径是什么?" 
chat.qianfan_func_call(query=prompt)

 
{'query': "当前文件'.'的绝对路径是什么?",
'result': '/mnt/d/wks/aiwks/bigmodel/kejian/day03_func_call/mychat',
'thinking': []}

 


 
pip install openai
pip install python_dotenv

 


 


常用模型调用API

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

openai最原始的API调用方法

 

from tpf.llm.openai import chat   

model_list = ["gpt-4o","o1-mini-2024-09-12","deepseek-r1"]
res = chat(prompt, response_format="text", model=model_list[2])
print(res)

deepseek-r1 671b对于中文的理解真是强悍到没边了... 但也真的是费token

ollama 本地模型调用方法

 
from tpf.llm.ollama import chat_ollama

# DeepSeek-R1-14B-Q8:latest,DeepSeek-R1-14B-Q8:latest
res = chat_ollama(prompt,
    response_format='text',
    model='DeepSeek-R1-14B-F16:latest')
print(res)
    

函数调用方法,若没有提供问题对应的函数则会报错

 
from tpf.llm import FuncCall
fc = FuncCall()

response = fc.chat(query=prompt, 
                    model_list=["gpt-4o-mini","gpt-4o",'DeepSeek-R1-14B-Q8:latest','DeepSeek-R1-14B-F16:latest'], 
                    func_index=3, answer_index= 2 )

print(response)

 
本地与在线混合支持,若是本地模型则需要通过下面的方法注册一下,目前只支持本地ollama模型
Signature: fc.set_ollama_local_model(model_name)
Docstring: 添加本地ollama模型名称
    
    

 

    

本地ollama

 
启动Ollama 

llm@ii:~$ which ollama
/wks/python/ollama_offline/bin/ollama
llm@ii:~$ ollama serve

    
llm@ii:~$ ollama list
NAME                          ID              SIZE     MODIFIED
DeepSeek-R1-32B-Q8:latest     584ac87d48be    34 GB    2 months ago
DeepSeek-R1-32B-Q6:latest     05dfbe0bbb66    26 GB    2 months ago
DeepSeek-R1-32B-Q4:latest     1323fb0c27f8    19 GB    2 months ago
DeepSeek-R1-14B-Q8:latest     4d3466debbb4    15 GB    2 months ago
DeepSeek-R1-14B-F16:latest    24b92b30ec3e    29 GB    2 months ago

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

    

 
from tpf.llm import chat   

model_list = ["gpt-4o","o1-mini-2024-09-12","deepseek-r1","DeepSeek-R1-14B-Q8:latest"]
prompt = "你好"
res = chat(prompt_user=prompt, prompt_system=None, temperature=1, 
            model=model_list[3],
            base_url='http://localhost:11434/v1/',api_key='key')
print(res)
    

 
    
你好!很高兴见到你,有什么我可以帮忙的吗?无论是学习、工作还是生活中的问题,都可以告诉我哦!😊
    

简化参数

 
from tpf.llm import chat   

model_list = ["gpt-4o","o1-mini-2024-09-12","deepseek-r1","DeepSeek-R1-14B-Q8:latest"]
prompt = "你好"
res = chat(prompt_user=prompt, prompt_system=None, temperature=1, 
            model=model_list[3])
print(res)
    

 
from tpf.llm import MyChat
chat = MyChat(env_file="env.txt")

本地ollama

 
query = "你好,讲个笑话"
res = chat.ollama(prompt_user=query,model=["DeepSeek-R1-14B-Q8:latest","DeepSeek-R1-14B-F16:latest","DeepSeek-R1-32B-Q6:latest","DeepSeek-R1-32B-Q8:latest"])
print(res)


你好!当然可以。这是一个简单的笑话:

为什么电脑去โรงพยาliteral?因为它感染了病毒! 

deepseek在线API

 
query = "你好,讲个笑话"
res = chat.deepseek(prompt_user=query)
res

{'query': '你好,讲个笑话',
 'result': '有一天,小明问老师:“老师,为什么我们要学数学?”老师回答:“因为生活中处处都有数学啊!”小明想了想说:“那为什么我妈妈买菜从来不算账?”',
 'thinking': ['用户请求讲一个笑话,需要选择一个适合的、轻松幽默的内容。',
  '考虑到文化差异和普遍接受度,选择一个与学习相关且不涉及敏感话题的笑话。',
  '构思一个关于数学学习的简单笑话,确保语言通俗易懂。',
  '检查笑话是否可能冒犯特定群体(如家长、教师),确认无问题后输出。']}

openai

 
query = "你好,讲个笑话"
res = chat.openai(prompt_user=query,
    prompt_system=None,
    models=['gpt-4o', 'o1-mini-2024-09-12'],
    temperature=1,
    return_json=True,)
print(res)

 
{'query': '你好,讲个笑话', 
'result': '为什么电脑会感冒?因为它总是打开了很多窗口!', 
'thinking': ['确定用户请求类型为讲笑话。', 
'尝试选择一个通俗易懂且轻松的笑话。', 
'考虑用户可能希望快速得到一个有趣且容易理解的结果。']}


会对用户填写的Prompt做一个结果的json封装,除此之外无其他操作

 
def return_json1():
    output_format = """
    输出格式:json格式,包含在```json ```标记中,
    1. query字段,string类型,其value为用户的问题
    2. result字段,string类型,其value为最终回复结果
    3. thinking字段,list类型,
    3.1 列表元素为大模型的思考步骤,按思考顺序整理为list列表;
    3.2 若无思考步骤,则列表为空
    
    """
    return output_format

 
def deepseek(self, prompt_user, 
    prompt_system=None, 
    models=['deepseek-chat','deepseek-reasoner'], 
    temperature=1, 
    return_json=True):
"""
- models:默认使用model[0],使用时调整其顺序即可
- return_json:
输出格式:json格式,包含在```json ```标记中,
    1. query字段,string类型,其value为用户的问题
    2. result字段,string类型,其value为最终回复结果
    3. thinking字段,list类型,
    3.1 列表元素为大模型的思考步骤,按思考顺序整理为list列表;
    3.2 若无思考步骤,则列表为空
"""
    

 
if return_json:
    try:
        json_str = tools.get_json_str(content)
        json_dict = json.loads(json_str)
        is_parse_ok = True 
    except Exception as e:
        print(e)
        is_parse_ok = False 
        
    if is_parse_ok:
        return json_dict
    

 
-------------------------------------------------------------------------- ---------

 
邮箱登录 
https://devcto.com/app/account

模型调用概述

依赖包安装

 
pip install python-dotenv  #读取文件中的环境变量
pip install openai

环境变量配置与加载:默认加载 .env 文件中的环境变量

 
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。

加载指定的文件

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

 

    

 
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 stdio.h
#include stdlib.h

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

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

 


流式调用

 
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

def get_completion(prompt, model="gpt-3.5-turbo-1106"):
    '''封装 openai 接口'''
    messages = [{"role": "user", "content": prompt}]
    client = OpenAI() 
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0.9,  # 模型输出的随机性,0 表示随机性最小
    )
    return response.choices[0].message.content
    

 
prompt = """
我是七三学徒,热爱新技术,对AI有浓厚的兴趣,

请问七三学徒是谁?
"""
get_completion(prompt)
    

 
'七三学徒通常指受过严格训练的学徒,以“七分师傅,三分学徒”来形容。这个成语源自中国古代,形容学徒在师傅的指导下学习技艺。'

```temperature=0
'七三学徒通常指的是中国著名科学家、工程师和教育家钱学森。他被称为“七三学徒”是因为他在1937年以73岁高龄获得了加拿大麦吉尔大学的博士学位。钱学森是中国现代航空航天事业的奠基人之一,也是中国的科学家和教育家。'
```
    

 
prompt = """
七三学徒是一个热爱新技术,对AI有浓厚的兴趣的人

请问七三学徒是谁?
"""
get_completion(prompt)

 
'七三学徒是一个虚构的人物,通常用来形容对新技术和人工智能有浓厚兴趣的人。'

 


 


system role

 
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

client = OpenAI(
)

# 消息
messages = [
    {
        "role": "system",
        "content": "我是七三学徒,热爱新技术,对AI有浓厚的兴趣"  # 注入新知识
    },
    {
        "role": "user",
        "content": "请问七三学徒是谁?"  # 问问题。可以改改试试
    },

]

# 调用 GPT-3.5
chat_completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=messages
)

# 输出回复
print(chat_completion.choices[0].message.content)

 
七三学徒是一个虚拟角色,代表一个热爱学习、积极探索新知识的学习者。
在这里,我作为七三学徒角色与您交流,分享知识,解答问题。
欢迎提出您感兴趣的问题,让我们一起探讨学习、科技和其他话题!

结合前面的例子,可以充分体会 system role这个角色
这个是指定系统是个什么角色,
这里呢,在体系里说的是“我”,LLM折中处理了这个过程... 

这么难回答的一个问题,使用user role,结果就会大不相同

 
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

client = OpenAI(
)

# 消息
messages = [
    {
        "role": "user",
        "content": "我是七三学徒,热爱新技术,对AI有浓厚的兴趣"  # 注入新知识
    },
    {
        "role": "user",
        "content": "请问七三学徒是谁?"  # 问问题。可以改改试试
    },

]

# 调用 GPT-3.5
chat_completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=messages
)

# 输出回复
print(chat_completion.choices[0].message.content)
    

 
“七三学徒”是一个由网络上的一个匿名程序员所使用的ID或网名,通常在技术相关的讨论或社交平台上被使用。他(或她)可能以此来表达对自己在技术领域中仍需学习和成长的态度。在网上,大家可能更熟悉他使用的这个ID,而不是他的真名。

 
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

client = OpenAI(
)

# 消息
messages = [
    {
        "role": "system",
        "content": "七三笔记网站是一个介绍AI相关知识的网站"  # 注入新知识
    },
    {
        "role": "user",
        "content": "七三笔记网站是做什么?"  # 问问题。可以改改试试
    },

]

# 调用 GPT-3.5
chat_completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=messages
)

# 输出回复
print(chat_completion.choices[0].message.content)

 
七三笔记网站是一个介绍人工智能(AI)相关知识的网站,提供关于人工智能技术、应用、发展等方面的文章、教程和资讯。用户可以在网站上学习人工智能的基础知识,了解最新的人工智能技术趋势,以及探讨人工智能在各个领域的应用和发展。


 


 
通过验证码登录 
https://devcto.com/app/account
  

 

  

 

  

 


langchain·openai

 
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
    

 
from langchain_openai import OpenAI

llm = OpenAI() 
prompt = """
我是七三学徒,热爱新技术,对AI有浓厚的兴趣,

请问七三学徒是谁?
"""
response = llm.invoke(prompt)
print(response)
    

执行的结果是有一定随机性的,尤其是这样LLM无法准确理解的问题

 
七三学徒不是一个具体的人,而是一个身份。一般指在某个领域或技术上只有初步了解的学习者,处于初级阶段的学习者。这个称呼源自中国古代的经典《论语》中的一句话:“七十而从心所欲,不逾矩”,意思是说人到70岁时,应该能够按照自己的意愿去做事,但也不要超过规矩。后来民间就用“七十从心所欲”来形容初学者,后来又简称为“七三学徒”。

七三学徒是一个网络用戶名,代表一个人的匿名身份,无法确定具体是哪个人

七三学徒是一个网络上的虚拟角色,代表着一个热爱新技术、对人工智能有浓厚兴趣的普通人。他/她并没有具体的身份和真实的存在,只是一种社交媒体上的身份标识。
    

 

    

 

    

 

    

 


 

  

 


langchain·监控

 
from langchain_community.callbacks import get_openai_callback
from langchain_openai import OpenAI

# 初始化
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

llm = OpenAI()
    

with中可以是llm直接调用,也可以是chain调用

 
with get_openai_callback() as cb:
    res = llm.invoke("如何培养持久学习的习惯?")
    print(res)  
    

 
1. 设定明确的学习目标:首先,要明确自己想要学习什么内容,设定明确的学习目标,这样可以让学习更有针对性和方向性。

2. 制定学习计划:制定一个学习计划,将学习内容分解成小目标,每天或每周规划学习的时间和内容,这样可以让学习变得更有条理,避免拖延和浪费时间。

3. 坚持每天学习:持久学习的关键是每天都要保持学习的习惯,可以设定固定的学习时间,保证每天都有一定的学习时间。

4. 找到适合自己的学习方式:每个人的学习方式都不同,有的人喜欢看书,有的人喜欢听课,
    

 
print(cb)
Tokens Used: 274
	Prompt Tokens: 18
	Completion Tokens: 256
Successful Requests: 1
Total Cost (USD): $0.000539
    

 

    

 

    

 

    

 


 

  

 


参考