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

书生大模型实战营第四期-入门岛-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

代码:

from collections import Counter

class 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 False
            
        return True

任务二

任务内容

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

TIPS:

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

作业过程

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

from openai import OpenAI
import json
import os

def internlm_gen(prompt,client):
    '''
    LLM生成函数
    Param prompt: prompt string
    Param client: OpenAI client 
    '''
    response = client.chat.completions.create(
        model="internlm2.5-latest",
        messages=[
            {"role": "user", "content": prompt},
      ],
        stream=False
    )
    return response.choices[0].message.content

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

from openai import OpenAI
import json
import os
import re

def internlm_gen(prompt,client):
    '''
    LLM生成函数
    Param prompt: prompt string
    Param client: OpenAI client 
    '''
    response = client.chat.completions.create(
        model="internlm2.5-latest",
        messages=[
            {"role": "user", "content": prompt},
      ],
        stream=False
    )
    return response.choices[0].message.content

api_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 

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

import sys

numpy_dir = '/root/myenvs'

if numpy_dir not in sys.path:
    sys.path.append(numpy_dir)

import numpy as np

print("-"*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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/925679.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java全栈day10--后端Web基础(基础知识)之续集

一、Servlet执行流程 二、Http协议&#xff08;相对Tomcat和servlet重要一点&#xff09; 2.1Http-概叙 2.2Http-请求协议 2.2.3请求数据格式 2.2.3请求数据获取 先启动服务器 访问/hello Servlet 访问浏览器端Http协议数据 查看数据

【Docker系列】Docker 中使用 Redis 配置文件的详细指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

图像显示的是矩阵的行和列,修改为坐标范围。

x 3; y 3; f1x x^2 y^2; guance1 f1x; F (x, y) sqrt((x.^2 y.^2 - guance1).^2); % 使用点乘 [x, y] meshgrid(0:1:5, 0:1:5); Z F(x, y); figure; imagesc(Z); % 由于 imagesc 使用矩阵索引作为坐标&#xff0c;我们需要手动添加刻度 % 这里我们假设 x 和 y 的范围…

人工智能的微积分基础

目录 ​编辑 引言 微积分的基本概念 1. 导数 2. 积分 3. 微分方程 微积分在人工智能中的应用 1. 机器学习中的优化 2. 反向传播算法 3. 概率与统计 4. 控制理论 5. 自然语言处理中的梯度 6. 计算机视觉中的积分 7. 优化算法中的微积分 8. 微分几何在深度学习中的…

肿瘤微环境中单细胞的泛癌分类

scRNA-seq可以揭示肿瘤微环境 (TME) 内细胞异质性的宝贵见解&#xff0c;scATOMIC是一种用于恶性和非恶性细胞的注释工具。在 300,000 个癌症、免疫和基质细胞上训练了 scATOMIC&#xff0c;为 19 种常见癌症定义了一个泛癌症参考&#xff0c;scATOMIC优于当前的分类方法。在 2…

OpenCV_Code_LOG

孔洞填充 void fillHole(const Mat srcBw, Mat &dstBw) {Size m_Size srcBw.size();Mat TempMat::zeros(m_Size.height2,m_Size.width2,srcBw.type());//延展图像srcBw.copyTo(Temp(Range(1, m_Size.height 1), Range(1, m_Size.width 1)));cv::floodFill(Temp, Point(…

C语言数据结构——详细讲解《队列》

C语言数据结构——详细讲解《队列》 前言一、队列的概念二、队列的操作&#xff08;一&#xff09;定义队列结构&#xff08;二&#xff09;初始化队列&#xff08;三&#xff09;入队列操作&#xff08;四&#xff09;出队列操作&#xff08;五&#xff09;获取队头元素&#…

【模块一】kubernetes容器编排进阶业务容器化案例

Kubernetes 实战案例 Kubernetes实战案例-规划(基于nerdctl buildkitdcontainerd构建容器镜像) 业务容器化优势&#xff1a; ① 提高资源利用率、节约部署IT成本。 ② 提高部署效率&#xff0c;基于kubernetes实现微服务的快速部署与交付、容器的批量调度与秒级启动。 ③…

政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例

目录 Cusor的主要特点 Cusor实操 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; Cursor 是 Visual Studio Code 的一个分支。这使我们能够…

Android 12.0 DocumentsUI文件管理器首次进入默认显示内部存储文件功能实现

1.前言 在12.0的系统rom定制化开发中,在关于文件管理器的某些功能中,在首次进入文件管理器的时候默认进入下载 文件夹,点击菜单选择内部存储的时候,会显示内部存储的内容,客户开发需要要求默认显示内部存储的文件 接下来分析下功能的实现 如图: 2.DocumentsUI文件管理器首…

9.机器学习--SVM支持向量机

支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种二分类监督学习模型。支持向量机最早在 1964 年被提出&#xff0c;1995年前后理论成熟并开始被大量应用与人像识别、文本分类等问题中。它的基本模型是定义在特征空间上的间隔最大的线性分类器&…

数据结构---链表

1. 简介 链表&#xff08;Linked List&#xff09;是一种常见的线性数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据部分和指向下一个节点的指针&#xff08;或引用&#xff09;。链表的一个主要优点是能够高效地插入和删除元素&#xff0c;尤其是在数组…

“移门缓冲支架:为家庭安全加码”

在智能家居日益普及的今天&#xff0c;科技不仅改变了我们的生活方式&#xff0c;也提升了家居的安全。移门缓冲支架作为一项结合了现代技术的小型装置&#xff0c;正逐渐成为提升家庭安全的重要配件。它通过吸收门关闭时的冲击力、减缓关门速度以及减少噪音等多重功能&#xf…

vscode、android studio、vim 国产AI编程插件Fitten Code

文章目录 Fitten Code简介vim安装Fitten Code插件Android Studio安装Fitten Code插件Fitten Code功能相关文章 Fitten Code简介 Fitten Code是由非十大模型驱动的AI编程助手&#xff0c;它可以自动生成代码&#xff0c;提升开发效率&#xff0c;帮您调试Bug&#xff0c;节省您…

一个月速成python+OpenCV图像处理

OpenCV是一个广受欢迎且极为流行的计算机视觉库&#xff0c;它因其强大的功能、灵活性和开源特性而在开发者和研究者中备受青睐。 学习OpenCV主要就是学习里面的计算机视觉算法。要学习这些算法的原理&#xff0c;知道它们适用于哪些场景&#xff0c;然后通过Python编写代码来…

深度学习2:从零开始掌握PyTorch:数据操作不再是难题

文章目录 一、导读二、张量的定义与基本操作三、广播机制四、索引与切片五、内存管理六、与其他Python对象的转换本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,…

win10系统安装docker-desktop

1、开启Hyper-v ———————————————— Hyper-V 是微软提供的一种虚拟化技术&#xff0c;它允许你在同一台物理计算机上运行多个独立的操作系统实例。这种技术主要用于开发、测试、以及服务器虚拟化等领域。 —————————————————————— &#…

如何使用谷歌浏览器访问被屏蔽的网站

在互联网浏览过程中&#xff0c;我们有时会遇到一些网站被屏蔽的情况&#xff0c;这可能是因为地域限制、网络审查或其他原因。对于使用谷歌浏览器的用户来说&#xff0c;有几种方法可以尝试访问这些被屏蔽的网站。本文将详细介绍如何使用谷歌浏览器访问被屏蔽的网站。&#xf…

Next.js -服务端组件如何渲染

#题引&#xff1a;我认为跟着官方文档学习不会走歪路 服务器组件渲染到客户端发生了什么&#xff1f; 请求到达服务器 用户在浏览器中请求一个页面。 Next.js 服务器接收到这个请求&#xff0c;并根据路由找到相应的页面组件。服务器组件的渲染 Next.js 识别出请求的页面包含…

数据结构与算法——N叉树(自学笔记)

本文参考 N 叉树 - LeetBook - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 遍历 前序遍历&#xff1a;A->B->C->E->F->D->G后序遍历&#xff1a;B->E->F->C->G->D->A层序遍历&#xff1a;A->B->C->D->…