使用Python+英伟达DeepSeek镜像创建控制台AI

前言

DeepSeek最近官网人太多了,导致每次出现的都是服务器繁忙,这时连忙从网上找一个镜像,能用就行。

那么本次就选取了英伟达的DeepSeek蒸馏r1模型镜像,并使用Python调用!

模型能够调取纯靠天意,因为这玩意有一部分时间输出不出来!

正文

准备工作

首先,你需要准备这些东西:

  • 一个Python环境,最好是3.8版本
  • 一个邮箱,用于注册英伟达账号,一定要是真实的,推荐QQ或者163

注册英伟达账号

打开这串地址,在这里找到Get API Key(下图一),然后你就会进入到一个页面,在输入框里填上你的邮箱,再点击Next(下图二),这样你就跳转到了英伟达的注册页面。再设置一下你的密码,点击创建账户(下图三),接下来回跳到收验证码这个页面,这时候就要去看一下你的邮箱了。

图一
output_with_watermark1.webp
output_with_watermark2.webp

接下来你就会收到一个验证邮件(下图四),复制一下验证码,回到刚才的页面,输入验证码,点击继续,就会跳转到下一个页面,这里的两个勾都不要点,毕竟谁也不想邮件箱里塞满了垃圾邮件。这里点提交,这时候又跳转到了一个页面,在这里给自己取个英文名,点击Create NVIDIA Cloud Account,这时候你就成功注册了英伟达账号。这时候你就会重定向回到刚才的页面,还是点击Get API Key,这时候就会弹出个页面,生成出来了APIkey,复制下来,记得保存好,因为后面要用到。

output_with_watermark3.webp
output_with_watermark4.webp
output_with_watermark5.webp
output_with_watermark6.webp

调用DeepSeek镜像

好了,现在你已经注册了英伟达账号,并且有了APIkey,接下来就可以调用DeepSeek镜像了。

当然,不要忘记下载openai这个库,你可以在终端里输入pip install openai来安装。

pip install openai

以下是调用DeepSeek镜像的Python代码 虽然英伟达官网有但还是搬过来水一下字数嘿嘿~

from openai import OpenAI

client = OpenAI(
base_url = "https://integrate.api.nvidia.com/v1",
api_key = "从官网复制过来的API"
)

completion = client.chat.completions.create(
model="deepseek-ai/deepseek-r1",
messages=[{"role":"user","content":"详细讲解一下二次根式"}],
temperature=0.6,
top_p=0.7,
max_tokens=4096,
stream=True
)

for chunk in completion:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")

代码解析

导入openai库

from openai import OpenAI

创建API客户端

client = OpenAI(
base_url = "https://integrate.api.nvidia.com/v1",
api_key = "从官网复制过来的API"
)

这里主要是用来定义一下API的地址和APIkey,这时刚才保存的API秘钥就派上用场了

调用聊天模型

completion = client.chat.completions.create(
model="deepseek-ai/deepseek-r1",
messages=[{"role":"user","content":"详细讲解一下二次根式"}],
temperature=0.6,
top_p=0.7,
max_tokens=4096,
stream=True
)

这段代码调用了聊天模型来生成回复。具体参数如下:

  • model: 指定了使用的模型名称,这里调用了DeepSeek的R1模型。
  • messages: 是一个消息列表,包含了对话中的消息。这里只有一个消息,角色为”user”,内容为“详细讲解一下二次根式”。
  • temperature: 控制生成文本的随机性。值越低,生成的文本越确定;值越高,生成的文本越随机。这里设置为0.6
  • top_p: 使用核采样技术来控制生成文本的多样性。这里设置为0.7
  • max_tokens: 限制生成文本的最大长度。这里设置为4096
  • stream: 设置为True时,API会返回一个生成器,逐块返回生成的文本内容,而不是一次性返回完整内容。

处理生成的文本

for chunk in completion:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")

这段代码遍历了从API接收到的文本块。对于每个文本块,检查delta.content是否存在,如果存在则打印出该文本块的内容。end=""参数确保打印时不换行,而是将所有文本块连接起来输出完整的回复。

详细讲解一下二次根式可以改成任何内容,这里只做示范

输出结果

Deepseek输出(八年级下册二次根式)

嗯,我现在要详细讲解二次根式。首先,二次根式应该就是平方根相关的表达式吧,比如√a这样的形式。不过可能还涉及到更复杂的表达式,比如包含变量的二次根式,或者加减乘除运算。让我先回忆一下课本里的内容,或者老师讲过的知识点。

首先,二次根式的定义是什么呢?二次根式一般是指形如√a(a≥0)的代数式,对吧?这里的a是被开方数,当a是非负数的时候,√a表示a的算术平方根,也就是非负的那个平方根。所以,二次根式成立的条件是被开方数必须非负,也就是a≥0。这一点很重要,比如√(x-3)这样的式子,里面的x-3必须≥0,也就是x≥3,这时候这个二次根式才有意义。

接下来,二次根式的性质应该有几个重要的点。比如,二次根式的乘法法则,√a * √b = √(ab),这里a和b都是非负数。然后除法的话,√a / √b = √(a/b),这里b不能为0,而且ab都要非负。这些法则可以帮助简化根式或者进行运算。

然后是关于最简二次根式的概念。最简二次根式需要满足两个条件:一是被开方数的因数中不能含有完全平方数,也就是说被开方数的各个因数的指数都要小于2;二是分母中不能有根号,或者说根号里不能有分母。比如√8可以化简为2√2,这样就是最简二次根式了,因为8=4*24是完全平方数,开出来是2,剩下的2留在根号里。再比如√(1/2)应该化简为√2/2,这样分母就没有根号了。

接下来是二次根式的加减法。加减法的话,需要先把各个二次根式化简成最简形式,然后合并同类二次根式,也就是被开方数相同的根式。比如√2 + 3√2 = 4√2,但如果是√2 + √3,就不能合并了,因为它们被开方数不同。同样,√8 + √2的话,需要先把√8化简成2√2,然后合并成3√2

然后是二次根式的乘除法。乘法的话,根据之前的法则,可以先把根号外的系数相乘,根号内的被开方数相乘,然后再化简。比如2√3 * 3√5 = 6√15,然后看15有没有平方因数,这里没有,所以结果就是6√15。如果是除法的话,类似,系数相除,被开方数相除,再化简。比如6√15 ÷ 3√5 = 2√3,因为15÷5=3,系数6÷3=2,所以得到2√3

还有一个重要的部分是分母有理化,也就是把分母中的根号去掉。常用的方法就是用分母的有理化因式来乘以分子和分母。比如,如果分母是√a,那么有理化因式就是√a,所以乘以√a/√a,这样分母就变成a了,分子则乘以√a。例如,1/√2 有理化后就是√2/2。如果分母是两个根号相加,比如a + √b,那么有理化因式就是a - √b,这样乘积就是a² - b,可以去掉根号。例如,1/(√3 + √2) 的有理化因式是√3 - √2,所以分子分母都乘以这个,得到(√3 - √2)/[(√3)^2 - (√2)^2] = (√3 - √2)/(3 - 2) = √3 - √2

然后,可能还会涉及到二次根式的混合运算,比如加减乘除一起出现的情况,这时候需要按照运算顺序,先乘除后加减,有括号先算括号里的,同时注意每一步的化简,确保结果的正确性

不过,可能还有一些需要注意的地方,比如二次根式与指数运算的关系,√a其实就是a1/2次方,所以二次根式的运算也可以用指数的法则来处理。例如,√a * √a = a^(1/2) * a^(1/2) = a^(1) = a,这和平方根的定义是一致的。

还有,二次根式在解方程中的应用,比如解一元二次方程时,求根公式中会出现√(b² - 4ac),这时候需要注意判别式的正负,如果为负数,方程就没有实数解,而是复数解。

不过,可能刚才提到的都是比较基础的内容,有没有更深入的知识点呢?比如二次根式的近似值估算,或者比较复杂的化简问题。比如,如何化简√(9 + 4√5),可能需要将其表示为√a + √b的形式,然后解方程找到ab的值。例如,假设√(9 + 4√5) = √a + √b,两边平方得到9 + 4√5 = a + b + 2√(ab),所以可以得到方程组:a + b = 9,2√(ab) = 4√5 → √(ab) = 2√5 → ab = 20于是解这个方程组,找到a和b的值,使得a + b = 9,ab = 20。解这个二次方程的话,可以设x² - 9x + 20 = 0,解得x=(9±√(81-80))/2=(9±1)/2,即x=5或4。所以a=5,b=4,或者反过来,所以√(9 + 4√5) = √5 + √4 = √5 + 2。这样化简后的形式可能更方便运算。

另外,二次根式在几何中的应用,比如勾股定理中的斜边计算,或者几何图形的面积、体积公式中出现的根号。例如,直角边为1的等腰直角三角形,斜边就是√2,这样的长度就是二次根式的形式。

不过,可能还有一些易错点需要注意。比如,在计算√(a^2)的时候,结果应该是|a|,而不是a,因为平方根是非负的。例如,√((-3)^2) = √9 = 3,而不是-3。这一点有时候会被忽略,尤其是在处理变量的时候,需要注意a的正负情况。

还有,在运算过程中,如果遇到根号内有变量,必须考虑变量的取值范围。例如,√(x^2)在实数范围内等于|x|,而如果x本身是负数,那么√(x^2)的结果仍然是正数。所以在处理含有变量的二次根式时,必须明确变量的定义域,以确保根式有意义。

另外,二次根式在分母的时候,除了分母有理化之外,还要注意不能为零的情况。例如,1/√x 的定义域是x>0,因为x=0时分母为零,而x<0时根号内为负数,没有实数解。

再比如,多个二次根式的复合运算,例如√(√16),这个应该等于√4=2,但需要注意运算顺序,先算里面的根号,再算外面的。或者更复杂的表达式,比如√(3 + 2√2),同样可以尝试化简为√a + √b的形式,找到合适的ab,使得a + b = 3,2√(ab) = 2√2,即√(ab)=√2,所以ab=2,解方程组a + b=3,ab=2,得到a=1,b=2,或者反过来,所以√(3 + 2√2)=√2 + 1。这样的化简技巧在某些情况下很有用,比如在分母中出现这样的根式时,可以更容易地进行有理化。

还有,二次根式的比较大小问题,比如比较√5 + √3和√6 + 2的大小。这时候可能需要平方两边,但要注意平方后的结果是否保持不等号的方向,不过因为两边都是正数,平方是可以的。例如,(√5 + √3)^2 = 5 + 3 + 2√15 = 8 + 2√15,而(√6 + 2)^2 = 6 + 4 + 4√6 = 10 + 4√6。然后比较8 + 2√1510 + 4√6,可能需要进一步计算或者估算√15和√6的值,但这样可能比较麻烦,或许有其他的方法。

不过,可能这些例子有些复杂,但核心还是二次根式的基本性质和运算规则。需要多练习不同类型的题目,才能熟练掌握这些知识点。

总结一下,二次根式的关键点包括:

  1. 定义:形如√a(a≥0)的代数式,被开方数非负。
  2. 性质:乘法法则、除法法则、最简二次根式的条件。
  3. 运算:加减乘除,合并同类二次根式,分母有理化。
  4. 应用:在方程、几何中的使用,以及复杂根式的化简技巧。
  5. 注意事项:变量的取值范围,运算顺序,绝对值的处理等。

可能还有一些特殊的例子或技巧,但以上应该是二次根式的主要内容了

总结

这个模型的调用次数是有限制的,所以需要注意控制调用频率。另外,模型的输出速度也有待提高,不过既然是免费的也人之常情。

还有,为什么这个二次根式那么多啊இ௰இ,我们老师上课到底教了我们什么啊!つ﹏⊂,刚开学就整这玩意儿,真正的版本T0!