书生大模型实战营闯关关卡二

1.Leetcode练习

Leetcode 383题 赎金信

给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。

如果可以,返回true;否则返回false。

magazine中的每个字符只能在ransomNote中使用一次。

解题思路:只要判断ransomNote中每个字符出现的次数是否小于magazine中该字符出现的次数,通过set集合来构建字符集,通过count函数来计算出现次数

class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        rans = set(ransomNote)
        for i in rans:
            if ransomNote.count(i) > magazine.count(i):
                return False
        return True

答题通过

2.调试InternStudio笔记

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

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)

上述代码需要使用api_key,通过链接创建API Token

创建API Token

尽量不要将api_key直接编码在代码中,最好是通过环境变量去加载api_key,然后运行test文件

export api_key="填入你的api token"
python test.py

但是遇到了报错

遇到报错

提示第32行发生了JSONDecodeError的错误

我们使用Debug进行调试

Debug调试

可以得知是在对res的内容进行JSON解析时发生了错误,

res是internlm_gen的返回值,此时res的内容是

'```json\n{\n  "model_name": "书生浦语InternLM2.5",\n  "development_institution": "上海人工智能实验室",\n  "parameter_versions": ["1.8B", "7B", "20B"],\n  "context_length": "1M"\n}\n```'

比起一般的JSON内容,多了反引号"`"和"json"这个字符串,所以才会发生JSON解析错误

用replace函数去除

res = internlm_gen(prompt,client)
res = res.replace("`", "")
res = res.replace("json", "")
res_json = json.loads(res)
print(res_json)

此时res的内容已恢复成正常的json格式

正常json格式

能够正确输出提炼总结的结果

正确结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值