【书生大模型实战营】Python 前置基础

Conda 虚拟环境相关命令

  • conda 是一个很强大的工具,可以进行python的虚拟环境管理/第三方包管理。
  • 在使用conda命令之前,需要确保电脑环境中安装了Anaconda/Miniconda,如果不知道怎么安装请自行搜索,或者问问你喜欢的大模型。
  • 安装好后可以在终端中输入conda 命令然后按回车,或者conda --help 查看更多的帮助。
  1. 创建新环境
bash 复制代码
conda create --name myenv
  1. 激活虚拟环境
bash 复制代码
conda activate myenv
  1. 退出虚拟环境
bash 复制代码
conda deactivate
  1. 其它常见命令
bash 复制代码
#查看当前设备上所有的虚拟环境
conda env list
#查看当前环境中安装了的所有包
conda list
#删除环境(比如要删除myenv)
conda env remove myenv

安装Python第三方依赖包

  • 使用pip安装
bash 复制代码
pip install <你想安装的包名>
  • 使用 conda 安装
bash 复制代码
conda install <你想安装的包名>
  • 例如安装现在比较流行的python http 请求包:
bash 复制代码
pip install httpx
  • 安装requirements.txt
bash 复制代码
pip install -r requirements.txt

使用Vscode 连接开发机进行Python程序Debug

  1. 安装python扩展

    点击vscode左侧栏的插件图标->在搜索框内输入python然后回车->点击搜索结果的第一个->点击右侧插件详情的安装

  2. 配置调试

    打开需要调试的python文件->点击左侧栏的调试图标->点击"创建launch.json文件"->在弹出框内选择Python Debugger

    在接下来的弹出框内选择"Python文件"

    就会看到vscode帮忙创建的launch.json

  3. 设置断点

    回到需要调试的python文件,为需要调试的一行或者多行设置断点,在debug模式下,程序运行到断点处就会自动暂停

  4. 启动调试

    设置好断点后,就可以点击左侧的绿色播放按钮启动调试

  5. 查看变量

    启动调试后,就可以在左侧查看变量

  6. 单步执行代码

    1、跳到下一个断点

    2、跳到下一行

    3、如果当前行是准备执行某个函数则跳进这个函数,否则跳到下一行

    4、跳出当前函数

    5、重启调试

    6、停止调试

7.条件断点

  1. 表达式
    表达式断点在表达式为真时程序才会暂停
    在添加了一个普通断点之后再鼠标右键这个断点->点击编辑断点->表达式即可添加



添加好断点之后,再启动调试就会看到程序会运行到i = 9时才会暂停

  1. 触发计数

在编辑断点的时候选择触发计数,填入计数

可以看到程序在i = 5时会暂停,因为触发计数填的是5

  1. 记录日志

编辑断点->选择日志消息->输入日志消息 使用 {}将变量括起来以输出改变量

启动调试即可在调试控制台看到日志消息

Python调用InternLM api

申请API Token

打开书生-浦语大模型接口文档

点击API Tokens

再点击Create API Token

将创建的API Token 放到开发机环境变量中

bash 复制代码
export API_KEY=<YOUR API KEY>

或者写到 ~/.bashrc中 进行永久保存,再source ~/.bashrc读取到环境变量中

你也可以使用echo命令来确认你的环境变量中是否有API_KEY

bash 复制代码
echo $API_KEY

如果输出结果是你的API_KEY就ok啦

安装依赖包

在开发机终端中执行以下命令

bash 复制代码
pip install openai

运行代码

将以下代码保存到开发机中命名为intern_lm_api.py

python 复制代码
#./internlm_test.py
from openai import OpenAI
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)
prompt = '''你好!你是谁?'''
response = internlm_gen(prompt,client)
print(response)
bash 复制代码
python intern_lm_api.py

你可以可以尝试修改代码中的提示词以获得不同的大模型结果

关卡任务

任务一

算法题判断 ransomNote 是否能由magazine的字符组成,且magazine中的每个字符只能用一次。解题思路就是 遍历ransomNote 中的每个字符是否都在magazine中,只要有一个不存在就返回False。为了满足每个在magazine中的字符只能使用一次,需要在每次用过后将其从magazine中移除。
Leetcode383

任务二

调试如下代码

python 复制代码
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')
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)

直接运行就会有如下报错:

使用vscode运行时遇到报错vscode也为我们自动暂停到报错的那一行代码(32行),仔细查看报错就可以发现是Json解析出错了,一般这种报错都是解析的文本不符合json格式导致的。这时候就可以去查看res这个被json.loads的变量的内容:

果然一看,艾嘛介不是markdown格式的文本嘛。

要解决这个问题,只需把markdown代码块语法去除即可,加上以下这个两行代码:

加上后程序就可以正常输出啦:

再贴上解决后的代码:

python 复制代码
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')
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 = res.replace("```json", "")
res = res.replace("```", "")
res_json = json.loads(res)
print(res_json)
相关推荐
念九_ysl20 分钟前
Java 使用 OpenHTMLToPDF + Batik 将含 SVG 遮罩的 HTML 转为 PDF 的完整实践
java·开发语言·pdf
yaoxin52112330 分钟前
124. Java 泛型 - 有界类型参数
java·开发语言
liulilittle1 小时前
深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
开发语言·网络·c++·tcp/ip·智能路由器·tcp·通信
88号技师1 小时前
2025年6月一区-田忌赛马优化算法Tianji’s horse racing optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
Tipriest_1 小时前
Python关键字梳理
python·关键字·keyword
勤奋的知更鸟1 小时前
Java 编程之模板方法模式
java·开发语言·模板方法模式
上单带刀不带妹2 小时前
手写 Vue 中虚拟 DOM 到真实 DOM 的完整过程
开发语言·前端·javascript·vue.js·前端框架
im_AMBER2 小时前
学习日志05 python
python·学习
大虫小呓2 小时前
Python 处理 Excel 数据 pandas 和 openpyxl 哪家强?
python·pandas
哪 吒3 小时前
2025B卷 - 华为OD机试七日集训第5期 - 按算法分类,由易到难,循序渐进,玩转OD(Python/JS/C/C++)
python·算法·华为od·华为od机试·2025b卷