透過Jupyter Notebook+OpenAI+ollama簡單的呼叫本地模型

DbWong_0918發表於2024-07-27

透過Jupyter Notebook+OpenAI+ollama簡單的呼叫本地模型

起因是收到了ollama的郵件,貌似支援使用openai來呼叫本地的ollama下載的模型為自己用
image

想了下正好試下,因為這幾天正好在嘗試用Jupyter Notebook來寫點呼叫api的方式來使用大語言模型,看看後面能不能自己做點有意思的操作,openai的api key懶得搞,整點阿里雲的免費的token先用用還是可以的

剛好使用阿里的OpenAI Chat介面相容例項程式碼

要先做好的部分

開啟ollama

直接cmd輸入ollama serve,一般是沒問題的

安裝好openai包

在你要是用的環境下執行pip install -U openai

我這裡用的是1.36.1

image

確認沒有問題以後,我們就使用多輪對話的部分,下面就是阿里雲的例項程式碼

from openai import OpenAI
import os

def get_response(messages):
    client = OpenAI(
        # 如果您沒有配置環境變數,請在此處用您的API Key進行替換
        api_key=os.getenv("DASHSCOPE_API_KEY"), 
        # 填寫DashScope服務的base_url
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )
    completion = client.chat.completions.create(
        model="qwen-turbo",
        messages=messages,
        temperature=0.8,
        top_p=0.8
        )
    return completion

messages = [{'role': 'system', 'content': 'You are a helpful assistant.'}]
# 您可以自定義設定對話輪數,當前為3
for i in range(3):
    user_input = input("請輸入:")
    # 將使用者問題資訊新增到messages列表中
    messages.append({'role': 'user', 'content': user_input})
    assistant_output = get_response(messages).choices[0].message.content
    # 將大模型的回覆資訊新增到messages列表中
    messages.append({'role': 'assistant', 'content': assistant_output})
    print(f'使用者輸入:{user_input}')
    print(f'模型輸出:{assistant_output}')
    print('\n')

正常來說DASHSCOPE_API_KEY就是用阿里雲的api key,我們按照郵件裡面的說法,對其中的一些引數進行修改

修改後的

from openai import OpenAI
import os

def get_response(messages):
    client = OpenAI(
        # 如果您沒有配置環境變數,請在此處用您的API Key進行替換
        api_key='ollama',
        # 填寫DashScope服務的base_url
        base_url="http://localhost:11434/v1",
    )
    completion = client.chat.completions.create(
        model="qwen:14b",
        messages=messages,
        temperature=0.8,
        top_p=0.8
        )
    return completion

messages = [{'role': 'system', 'content': 'You are a helpful assistant.'}]
# 您可以自定義設定對話輪數,當前為3
for i in range(3):
    user_input = input("請輸入:")
    # 將使用者問題資訊新增到messages列表中
    messages.append({'role': 'user', 'content': user_input})
    assistant_output = get_response(messages).choices[0].message.content
    # 將大模型的回覆資訊新增到messages列表中
    messages.append({'role': 'assistant', 'content': assistant_output})
    print(f'使用者輸入:{user_input}')
    print(f'模型輸出:{assistant_output}')
    print('\n')

主要就是換這三個地方,api_key改成ollama,base_url改成本地的ollama埠我這裡是http://localhost:11434/v1,model改成你的模型名,這裡我用的是qwen:14b,沒辦法,電腦配置不好

image

然後就可以對話著玩了

image

如果呼叫成功了的話在cmd上會有輸出輸入,而且工作管理員的GPU會顯著提升

image

相關文章