首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【书生大模型实战营第四期】入门岛——Python task 关卡

【书生大模型实战营第四期】入门岛——Python task 关卡

作者头像
用户10984773
发布2025-07-02 21:26:16
发布2025-07-02 21:26:16
1830
举报

Ch1 Conda虚拟环境

虚拟环境是Python开发中不可或缺的一部分,它允许你在不同的项目中使用不同版本的库,避免依赖冲突。Conda是一个强大的包管理器和环境管理器。

创建新环境

在开发机上已经安装好了conda,可以直接使用。创建虚拟环境时主要需要设置两个参数,一是虚拟环境的名字,二是python的版本。

代码语言:javascript
复制
conda create --name myenv python=3.9

这将创建一个名为myenv的新环境,使用Python 3.9。在安装包时会有一步二次确认,填y就行。

如果要退出环境,回到默认环境,命令为

代码语言:javascript
复制
conda deactivate

其他常见的虚拟环境管理命令还有

代码语言:javascript
复制
#查看当前设备上所有的虚拟环境
conda env list
#查看当前环境中安装了的所有包
conda list
#删除环境(比如要删除myenv)
conda env remove myenv

进行开发机python debug

配置debug

在上一篇文章中,已经将python环境搭建好,所以需要调试配置一下。进入到vscode,连接到开发机,点击以下

选择python debugger后选择“Python File” config。

debug单个python文件

默认应该是已经选择好了python解释器,在代码行号旁边点击,即可设置断点!

图片
图片

在第四行打上断点

图片
图片
图片
图片

启动debug

图片
图片

在“Run and Debug”侧边栏的“Variables”(变量)部分,你可以看到当前作用域内的所有变量及其值。

图片
图片

单步执行代码

可以使用顶部的debug面板的按钮来单步执行代码。这样,你可以逐行运行代码,并查看每行代码执行后的效果。!

图片
图片

不同的断点

在VSCode中,我们还可以设置条件断点,这样断点只有在满足特定条件时才会触发。

普通断点:在代码行号左侧点击,添加断点。条件断点:在断点标记上右键,选择条件断点(conditional breakpoint)。VSCode 中常用的条件断点主要有三种类型:表达式(Expression):输入一个 Python 表达式,每次触发断点时运行该表达式,当表达式的值为 True 时 VS Code 会暂停执行。例如:x == 10 触发计数(Hit Count):断点触发计数达到输入值时才会暂停运行。记录日志(Log Message):触发该断点时在 Debug Console 中输出指定信息,实际上就是 logpoint。需要输入要输出的信息,如果要用到表达式,可以使用 {} 将表达式括起来。例如,每次记录变量 i 的值可以写 x={i}。

Python调用InternLM api

获取api key

前往书生浦语的API文档,登陆后点击API tokens。初次进入应该要绑定手机号。

图片
图片
图片
图片

注意保存好自己的的API Token。

使用InternLM api

代码语言:javascript
复制
#./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[].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)

可以在终端中临时将token加入变量,此时该环境变量只在当前终端内有效。

代码语言:javascript
复制
export api_key="填入你的api token"
python internlm_test.py

若是想永久加入环境变量,可以对 ~/.bashrc 文件中添加以下命令。

代码语言:javascript
复制
export api_key="填入你的api token"

运行时可能会缺少openai的库,所以可以使用

代码语言:javascript
复制
pip install openai

效果如下

图片
图片

任务二

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

代码语言:javascript
复制
from openai import OpenAI
import json
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[].message.content

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)

以上代码运行后,报错提示:

图片
图片

开始进行debug调试

图片
图片

弹出报错提示,所以尝试打印res,查看其res内容和类型

图片
图片

发现多了个json标识,要保证为纯json内容,即:

代码语言:javascript
复制
{
  "model_name": "书生浦语InternLM2.5",
  "developer": "上海人工智能实验室",
  "parameter_versions": [1.8B, 7B, 20B],
  "context_length": "1M"
}

可以修改代码为:

代码语言:javascript
复制
from openai import OpenAI
import json
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[].message.content

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','',1) # 去掉json字符串
# res = res.strip('```\n') # 去掉json字符串前后的```符号
res = res.lstrip('```json\n')
res = res.rstrip('\n```')
print(res)
res_json = json.loads(res)
print(res_json)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 盼望星辰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ch1 Conda虚拟环境
    • 创建新环境
  • 进行开发机python debug
    • 配置debug
    • debug单个python文件
    • 单步执行代码
    • 不同的断点
  • Python调用InternLM api
    • 获取api key
    • 使用InternLM api
    • 效果如下
  • 任务二
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档