书生大模型实战营第四期-入门岛-2. Python关卡任务

devtools/2024/11/27 11:01:02/

书生大模型实战营第四期-入门岛-2. Python关卡任务

书生大模型实战营-第四期

闯关手册:https://github.com/InternLM/Tutorial/blob/camp4/docs/L0/Python/task.md

任务类型任务内容预计耗时
闯关任务Leetcode 383(笔记中提交代码与leetcode提交通过截图)20mins
闯关任务Vscode连接InternStudio debug笔记10mins
可选任务pip安装到指定目录10mins

任务一

任务内容

完成Leetcode 383,笔记中提交代码与leetcode提交通过截图。

作业过程

结果:

leetcode-383

代码:

python">from collections import Counterclass Solution:def canConstruct(self, ransomNote: str, magazine: str) -> bool:# 统计每个字符出现的次数ransom_count = Counter(ransomNote)magazine_count = Counter(magazine)# 遍历 ransomNote 中的每个字符,检查 magazine 中是否有足够的供应for char, count in ransom_count.items():if magazine_count[char] < count:return Falsereturn True

任务二

任务内容

下面是一段调用书生浦语API实现将非结构化文本转化成结构化json的例子,其中有一个小bug会导致报错。请大家自行通过debug功能定位到报错原因并做修正。

TIPS:

  • 打断点查看下LLM返回的文本结果。造成本bug的原因与LLM的输出有关,学有余力的同学可以尝试修正这个BUG。
  • 作业提交时需要有debug过程的图文笔记,必须要有打断点在debug中看到res变量的值的截图。
  • 避免将api_key明文写在程序中!!! 本段demo为了方便大家使用debug所以将api_key明文写在代码中,这是一种极其不可取的行为!

作业过程

首先在开发机中运行打断点并运行任务代码,查看LLM返回内容:

python">from openai import OpenAI
import json
import osdef internlm_gen(prompt,client):'''LLM生成函数Param prompt: prompt stringParam client: OpenAI client '''response = client.chat.completions.create(model="internlm2.5-latest",messages=[{"role": "user", "content": prompt},],stream=False)return response.choices[0].message.contentapi_key = os.getenv('api_key')
# api_key = "" # 不推荐明文直接写在代码中
client = OpenAI(base_url="https://internlm-chat.intern-ai.org.cn/puyu/api/v1/",api_key=api_key)content = """
书生浦语InternLM2.5是上海人工智能实验室于2024年7月推出的新一代大语言模型,提供1.8B、7B和20B三种参数版本,以适应不同需求。
该模型在复杂场景下的推理能力得到全面增强,支持1M超长上下文,能自主进行互联网搜索并整合信息。
"""
prompt = f"""
请帮我从以下``内的这段模型介绍文字中提取关于该模型的信息,要求包含模型名字、开发机构、提供参数版本、上下文长度四个内容,以json格式返回。
`{content}`
"""
res = internlm_gen(prompt,client)
res_json = json.loads(res)
print(res_json)

断点查看LLM返回结果res,为markdown格式内容:

```json
{"模型名字": "书生浦语InternLM2.5","开发机构": "上海人工智能实验室","提供参数版本": [1.8B, 7B, 20B],"上下文长度": "1M"
}

debug界面打印的res变量值:

L0-<a class=python-debug-res" />
上述res返回markdown格式的一段json内容,通过正则表达式去除markdown语法部分,提取其中json格式字符串。修改后的代码如下:

python">from openai import OpenAI
import json
import os
import redef internlm_gen(prompt,client):'''LLM生成函数Param prompt: prompt stringParam client: OpenAI client '''response = client.chat.completions.create(model="internlm2.5-latest",messages=[{"role": "user", "content": prompt},],stream=False)return response.choices[0].message.contentapi_key = os.getenv('api_key')
# api_key = "" # 不推荐明文直接写在代码中
client = OpenAI(base_url="https://internlm-chat.intern-ai.org.cn/puyu/api/v1/",api_key=api_key)content = """
书生浦语InternLM2.5是上海人工智能实验室于2024年7月推出的新一代大语言模型,提供1.8B、7B和20B三种参数版本,以适应不同需求。
该模型在复杂场景下的推理能力得到全面增强,支持1M超长上下文,能自主进行互联网搜索并整合信息。
"""
prompt = f"""
请帮我从以下``内的这段模型介绍文字中提取关于该模型的信息,要求包含模型名字、开发机构、提供参数版本、上下文长度四个内容,以json格式返回。
`{content}`
"""
res = internlm_gen(prompt,client)
# print(res)
res_string = re.search(r'```json\n(.*?)\n```', res, re.DOTALL).group(1)
# print(res_string)
res_json = json.loads(res_string)
print(res_json)

运行结果:

(myenv) root@intern-studio-50014188:~/camp4/L0/Python# python task2_xg.py 
{'model_name': '书生浦语InternLM2.5', 'developer': '上海人工智能实验室', 'parameter_versions': ['1.8B', '7B', '20B'], 'max_context_length': '1M'}

任务三(可选)

任务内容

使用VScode连接开发机后使用pip install -t命令安装一个numpy到看开发机/root/myenvs目录下,并成功在一个新建的python文件中引用。

作业过程

使用pip的时候可以使用--target-t参数来指定安装目录,此时pip会将你需要安装的包安装到你指定的目录下。

pip install numpy -t /root/myenvs 

要引用指定目录的pythonnumpypython脚本开头临时动态地将该路径加入python环境变量中去。以下为代码示例:

python">import sysnumpy_dir = '/root/myenvs'if numpy_dir not in sys.path:sys.path.append(numpy_dir)import numpy as npprint("-"*30)# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5])# 打印数组
print("一维数组:\n", arr)# 数组的基本操作
arr_sum = np.sum(arr)  # 求和
arr_mean = np.mean(arr)  # 求平均值
arr_max = np.max(arr)  # 最大值
arr_min = np.min(arr)  # 最小值print("数组求和:", arr_sum)
print("数组平均值:", arr_mean)
print("数组最大值:", arr_max)
print("数组最小值:", arr_min)print("-"*30)# 创建二维数组
matrix = np.array([[1, 2], [3, 4]])# 打印数组
print("二维数组:\n", matrix)# 矩阵加法
matrix_add = matrix + 5  # 每个元素加5
print("矩阵加法:\n", matrix_add)# 矩阵乘法
matrix_mult = matrix @ matrix  # 矩阵乘法
print("矩阵乘法:\n", matrix_mult)print("-"*30)# 创建一个从0到10的等差数列
arr_range = np.arange(0, 10, 2)
print("等差数列:", arr_range)# 创建一个指定形状的全零数组
zeros_array = np.zeros((3, 3))  # 创建一个3x3的全零数组
print("全零数组:\n", zeros_array)# 创建一个指定形状的全一数组
ones_array = np.ones((2, 2))  # 创建一个2x2的全一数组
print("全一数组:\n", ones_array)

http://www.ppmy.cn/devtools/137371.html

相关文章

一个专为云原生环境设计的高性能分布式文件系统

大家好&#xff0c;今天给大家分享一款开源创新的分布式 POSIX 文件系统JuiceFS&#xff0c;旨在解决海量云存储与各类应用平台&#xff08;如大数据、机器学习、人工智能等&#xff09;之间高效对接的问题。 项目介绍 JuiceFS 是一款面向云原生设计的高性能分布式文件系统&am…

在Hadoop上实现分布式深度学习

在Hadoop上实现分布式深度学习 引言 随着大数据和深度学习的快速发展&#xff0c;分布式深度学习已成为当前研究和应用领域的热点。Hadoop作为一个广泛使用的分布式计算框架&#xff0c;在存储和处理大规模数据集方面表现出色&#xff0c;成为实现分布式深度学习的理想选择。…

AI时代的PPT革命:智能生成PPT工具为何备受青睐?

在日常工作和学习中&#xff0c;PPT是我们不可或缺的表达工具。制作一份精美的PPT常常需要耗费数小时&#xff0c;甚至几天的时间。从选择主题到调整排版&#xff0c;琐碎的细节让人筋疲力尽。但现在一种名为“AI生成PPT”的技术正悄然崛起&#xff0c;彻底颠覆了传统PPT制作的…

C语言学习 12(指针学习1)

一.内存和地址 1.内存 在讲内存和地址之前&#xff0c;我们想有个⽣活中的案例&#xff1a; 假设有⼀栋宿舍楼&#xff0c;把你放在楼⾥&#xff0c;楼上有100个房间&#xff0c;但是房间没有编号&#xff0c;你的⼀个朋友来找你玩&#xff0c;如果想找到你&#xff0c;就得挨…

2024.9 Pruning Cycles in UMLS Metathesaurus: A NeuroSymbolic AI Approach

UMLS Metathesdragon 中的修剪周期&#xff1a;一种神经符号 AI 方法 UMLS Metathesdragon 中的修剪周期&#xff1a;一种神经符号 AI 方法 Richard Wallace1、Ravi Bajracharya1、Jans Aasman1 和 Craig Norvell1 Franz Inc https://allegrograph.com/wp-content/uploads/2…

day05(单片机高级)PCB基础

目录 PCB基础 什么是PCB&#xff1f;PCB的作用&#xff1f; PCB的制作过程 PCB板的层数 PCB设计软件 安装立创EDA PCB基础 什么是PCB&#xff1f;PCB的作用&#xff1f; PCB&#xff08;Printed Circuit Board&#xff09;&#xff0c;中文名称为印制电路板&#xff0c;又称印刷…

摄像头原始数据读取——ffmpeg(av_read_frame)

摄像头原始数据读取——ffmpeg(av_read_frame) 测试代码test.cpp #include <iostream> #include <stdio.h> #include <string.h>#ifdef __cplusplus extern "C" { #endif #include "libavdevice/avdevice.h" #include <libavcodec/…

斐波那契数列 相关问题 详解

斐波那契数列相关问题详解 斐波那契数列及其相关问题是算法学习中的经典主题&#xff0c;变形与应用非常广泛&#xff0c;涵盖了递推关系、动态规划、组合数学、数论等多个领域。以下是斐波那契数列的相关问题及其解法的详解。 1. 经典斐波那契数列 定义 初始条件&#xff1…