AI

DeepSeek หรือ OpenAI ก็ได้ บนโปรเจค Microsoft Semantic Kernel

เรื่องที่เกี่ยวข้อง - Deepseek, Semantic Kernel

เรียกได้ว่าไม่หยุดหย่อนกับเทคโนโลยี AI ที่เปิดมาไตรมาสแรก จีนก็ส่งขุนพลทัพหน้าอย่าง DeepSeek มาชนกับกองพันธมิตร (หรือเปล่านะ) ของฝั่งตะวันตก ที่เรียกได้ว่าหมัดแรกก็เขย่าตลาดหุ้นทันที

เอาล่ะ เรื่องใครส่งอะไรมานั้น เรายินดีทั้งนั้นล่ะครับ พลมองว่าในส่วนของกลุ่มคนทำ Solution นั้น การแข่งขันกันแบบพลิกกระดานไปมานี้ พวกเราคือผู้ได้ประโยชน์ เพราะถ้าเรามองออกตั้งแต่แรก เราจะรู้ว่าในหลายๆ งานนั้นไม่สามารถจบได้ด้วย model เพียงรุ่นเดียว เจ้าเดียวแน่นอน

วันนี้ก็จะมาให้ดูว่า Semantic Kernel ที่สอนไปตั้งแต่ปีที่แล้วนั้น ปรับจาก GPT ของ OpenAI มาใช้ DeepSeek ได้ง่ายดายขนาดไหน ตรงนี้ขอใช้ Python เป็นตัวอย่างแล้วกัน

Ok…

ตอนนี้เหมือน DeepSeek API ปิดปรับปรุง รอเปิดอีกทีแล้วค่อยมาลองก็ได้น้า

ให้แอพต่อ Deepseek ผ่าน Semantic Kernel แทน OpenAI

ทีนี้พลไปพบว่าโครงของ Semantic Kernel เวอร์ชั่นปัจจุบัน (1.19.0) นั้นออกแบบมายืดหยุ่นพอตัว (คุณ Tao Chen guide ตัวอย่างไว้ให้ที่นี่) ทำให้พลสามารถทดสอบสร้างโปรเจค ที่ใช้การสลับค่า 3 ตัวจากของ OpenAI เป็น DeepSeek ได้เลย โดยที่ไม่ต้องเปลี่ยนโค้ดด้านใน ซึ่งตรงกับเป้าหมายเป้ะ

เหมือนคงร่างเดิม แต่เปลี่ยนจิตประมาณนี้ครับ 😁

ตัว .env แยกระหว่าง Deepseek กับ OpenAI สลับกันได้เลย ส่วนโค้ด python ก็จะอยู่ด้านล่าง ถ้าต้องการลองรัน สามารถไปรัน git repo พลได้นะลิ้งค์อยู่ด้านล่างครับ

# DeepSeek
API_KEY=
MODEL_ID=deepseek-chat
SERVICE_URI=https://api.deepseek.com
# OpenAI
API_KEY=
MODEL_ID=gpt-3.5-turbo
SERVICE_URI=https://api.openai.com/v1
view raw .env hosted with ❤ by GitHub
import asyncio
import os
from dotenv import load_dotenv
from openai import AsyncOpenAI
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import (
OpenAIChatCompletion,
OpenAIChatPromptExecutionSettings
)
from semantic_kernel.contents.chat_history import ChatHistory
from semantic_kernel.contents.utils.author_role import AuthorRole
from semantic_kernel.contents import ChatMessageContent
# Load environment variables from .env file
load_dotenv()
async def main():
# Initialize the kernel
kernel = Kernel()
# Add OpenAI chat completion service
api_key = os.getenv("API_KEY") # Load API key from environment variable
model_id = os.getenv("MODEL_ID") # Load model ID from environment variable
service_uri = os.getenv("SERVICE_URI") # Load service URI from environment variable
chat_completion = OpenAIChatCompletion(
ai_model_id=model_id,
service_id="chat_completion",
async_client=AsyncOpenAI(
api_key=api_key,
base_url=service_uri,
)
)
kernel.add_service(chat_completion)
# Create a chat history instance
chat_history = ChatHistory()
print("Type 'exit' to end the chat.")
while True:
# Get user input
user_input = input("User: ")
if user_input.lower() == "exit":
break
# Add user message to chat history
chat_history.add_user_message(user_input)
# Get AI response
prompt = chat_history.to_prompt()
ai_response = await kernel.invoke_prompt(prompt)
# Display AI response
print(f"Assistant: {ai_response}")
# Add AI response to chat history
chat_history.add_message(
ChatMessageContent(
role=AuthorRole.ASSISTANT,
name="Assistant",
inner_content=ai_response
)
)
if __name__ == "__main__":
asyncio.run(main())
view raw app.py hosted with ❤ by GitHub

ส่วนโปรเจคนั้นฝากไว้ที่ Git repo ของพลเอง สามารถกดเข้าไปดู และเอาไปลองรันได้เลยครับ

ส่งท้าย

ถึงแม้ว่าเราจะสามารถสลับ model ไปมาได้ หากเลือกใช้ Framework หรือออกแบบโครงสร้างของโปรเจคไว้ดีพอ พลก็ยังมองว่านอกจากโมเดลที่แรงกว่า ถูกกว่า ก็ยังต้องมีเรื่องของ Responsible AI ที่กำหนดแนวทางของการพัฒนาโซลูชั่นที่มี AI เป็นส่วนประกอบอยู่ดี

เหมือนกับถ้าเป็นหนังจีน นี่คือจากที่หงอคงพุ่งตัวลงมายืนที่พื้น เสียงดังสะเทือนเลือนลั่น แต่นี่เป็นหงอคงอย่างที่เราได้ยินในตำนานหรือไม่นั้น อยากให้ฝุ่นหายตลบก่อน เราค่อยมานั่งคุยกันสนุกๆ ที่ช่อง Youtube กันเช่นเคยครับ

ของให้อยู่ในยุคสมัยของ AI อย่างมีความสุขกันครับ

เริ่มต้นยุค AI ด้วยคอร์สฟรี และพรีเมี่ยม กับพล

หากชอบสิ่งที่พลเล่า เรื่องที่พลสอน สามารถสนับสนุนพลโดยการเข้าเรียนคอร์สออนไลน์ของพลนะคร้าบ

  • เข้าใจง่าย ใช้ได้จริง ออกแบบการสอนอย่างเข้าใจโดยโค้ชพล
  • มีคอร์สสำหรับคนใช้งานทั่วไป จนถึงเรียนรู้เพื่อใช้งานในสายอาชีพขั้นสูง
  • ทุกคอร์สมีใบประกาศณียบัตรรับรองหลังเรียนจบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save