【阿尼亚探索大模型】书生大模型实战营-入门岛第2关(L0G2000)Python 基础知识

任务类型

任务内容

预计耗时

闯关任务

Leetcode 383(笔记中提交代码与leetcode提交通过截图)

20mins

闯关任务

Vscode连接InternStudio debug笔记

10mins

一、Leetcode 383

首先,我们先看题目描述以及示例。

我们选择先创建一个字典来记录magazine中每个字符的数量,在通过遍历ransomNote中的每个字符进行判断。

二、InternLM2 API

首先我们进入书生浦语平台,点击创建API Token。

输入该API Token的名称,并提交。

提交后即可看到创建的API Token。

(注意!务必在本页面复制并自行保存,一旦点击确认后就无法查看了!)

后续可以在API Tokens界面看到已经创建的Tokens。

三、Python调用InternLM api

首先,我们需要安装对应插件,如下图所示。

安装完成后,我们点击左侧栏中的Run and Debug并点击create a launch.json file。

根据需求选择对应的Debug选项,我们选择Python File。

接着,我们点击左侧栏中的Explorer,进入/root工作目录,并创建一个internlm_test.py,内容如下:

#./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)

在右下角点击选择对应的Python编译器版本。

为了调用InternLM api,我们需要配置api key。但是,将api key以明文形式卸载代码内,存在非常大的风险,我们采用环境变量的方式来配置以避免token泄露。

方法一:临时变量

我们在linux终端中输入export api_key="填入你的api token",即可在当前终端内生效,再输入python internlm_test.py成功运行代码。

方法二、永久变量

我们可以通过修改 ~/.bashrc 文件实现api key的永久配置,避免每次运行都需进行环境配置。

在该文件中新建一行,内容为export api_key="填入你的api token"。

该配置文件修改后,需要通过source ~/.bashrc 命令才能生效。

输入python internlm_test.py,可以看到也成功运行代码。

四、使用vscode进行Python Debug

下面,我们开始进行Python Debug实验,点击左侧栏中的Explorer,进入/root工作目录,并创建一个internlm_debug.py,内容如下:

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[0].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)

接着,我们点击左侧栏中的Run and Debug,并点击上方的绿色箭头,即Starting Debugging。

该Python代码运行后,可以看到在第32行运行中断,并输出报错信息。

根据报错信息,我们对该行代码进行分析,主要是res变量存在问题。

问题:由于json.loads()方法输入内容为json格式,而res作为大模型输出,其格式无法完全匹配。

我们可以看到,下图中res为原始字符串,而res_str为我们需要的结果字符串。

为此,我们需要通过修改代码,对该字符串进行处理。

我们采用正则表达式来提取字符串中的json数据,具体代码如下:

import re
res_str = re.search(r'```json\n(.*?)\n```', res, re.DOTALL).group(1)
res_json = json.loads(res_str)

代码修改后,我们再次点击上方的绿色箭头,即Starting Debugging,即可看到下方终端页面成功显示结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱波吉的阿尼亚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值