Skip to content

Python SK: Use ChatGPT for Semantic Functions #643

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

awharrison-28
Copy link
Contributor

@awharrison-28 awharrison-28 commented Apr 25, 2023

Motivation and Context

Users want to use ChatGPT as the service for their semantic functions. This feature exists with the C# SK. ChatGPT is perfectly capable of doing this. Additionally added more end-to-end tests with the intention of being able to run them as integration tests for the Python SK.

Description

  • OpenAIChatCompletion now additionally inherits from TextCompletionClientBase. This extends to AzureOpenAIChatCompletion.
  • If a chat service is also a TextCompletionClientBase, it will be added to both text_services and chat_services.
  • Created 4 end-to-end tests that target the combination of Azure, OpenAI, text service, and chat service. Abstracted common behavior for these tests.
  • Added asserts to these end-to-end tests. These should be run as integration tests, but that will be handled in a separate PR.

Contribution Checklist

@awharrison-28 awharrison-28 added enhancement PR: ready for review All feedback addressed, ready for reviews python Pull requests for the Python Semantic Kernel labels Apr 25, 2023
Copy link
Contributor

@alexchaomander alexchaomander left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me! Very important feature! In the future, we should offer guidance (both for C# and Python) on when to use ChatCompletion vs TextCompletion.

@awharrison-28 awharrison-28 added PR: ready to merge PR has been approved by all reviewers, and is ready to merge. and removed PR: ready for review All feedback addressed, ready for reviews labels Apr 25, 2023
@lemillermicrosoft lemillermicrosoft merged commit 548429d into microsoft:main Apr 25, 2023
dluc pushed a commit that referenced this pull request Apr 29, 2023
### Motivation and Context
Users want to use ChatGPT as the service for their semantic functions.
This feature exists with the C# SK. ChatGPT is perfectly capable of
doing this. Additionally added more end-to-end tests with the intention
of being able to run them as integration tests for the Python SK.

### Description
- `OpenAIChatCompletion` now additionally inherits from
`TextCompletionClientBase`. This extends to `AzureOpenAIChatCompletion`.
- If a chat service is also a `TextCompletionClientBase`, it will be
added to both `text_services` and `chat_services`.
- Created 4 end-to-end tests that target the combination of Azure,
OpenAI, text service, and chat service. Abstracted common behavior for
these tests.
- Added asserts to these end-to-end tests. These should be run as
integration tests, but that will be handled in a separate PR.
dehoward pushed a commit to lemillermicrosoft/semantic-kernel that referenced this pull request Jun 1, 2023
### Motivation and Context
Users want to use ChatGPT as the service for their semantic functions.
This feature exists with the C# SK. ChatGPT is perfectly capable of
doing this. Additionally added more end-to-end tests with the intention
of being able to run them as integration tests for the Python SK.

### Description
- `OpenAIChatCompletion` now additionally inherits from
`TextCompletionClientBase`. This extends to `AzureOpenAIChatCompletion`.
- If a chat service is also a `TextCompletionClientBase`, it will be
added to both `text_services` and `chat_services`.
- Created 4 end-to-end tests that target the combination of Azure,
OpenAI, text service, and chat service. Abstracted common behavior for
these tests.
- Added asserts to these end-to-end tests. These should be run as
integration tests, but that will be handled in a separate PR.
github-merge-queue bot pushed a commit that referenced this pull request Oct 4, 2023
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.10 to
3.1.12.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's
changelog</a>.</em></p>
<blockquote>
<p>.. currentmodule:: psycopg</p>
<p>.. index::
single: Release notes
single: News</p>
<h1><code>psycopg</code> release notes</h1>
<h2>Future releases</h2>
<p>Psycopg 3.2 (unreleased)
^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Add support for integer, floating point, boolean <code>NumPy scalar
types</code>__

(:ticket:<code>[#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li>
<li>Add :ref:<code>raw-query-cursors</code> to execute queries using
placeholders in
PostgreSQL format (<code>$1</code>, <code>$2</code>...)
(🎫<code>[#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li>
<li>Add support for libpq functions to close prepared statements and
portals
introduced in libpq v17
(:ticket:<code>[#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li>
<li>Disable receiving more than one result on the same cursor in
pipeline mode,
to iterate through <code>~Cursor.nextset()</code>. The behaviour was
different than
in non-pipeline mode and not totally reliable
(:ticket:<code>[#604](https://github.com/psycopg/psycopg/issues/604)</code>).
The <code>Cursor</code> now only preserves the results set of the last
<code>~Cursor.execute()</code>, consistently with non-pipeline
mode.</li>
</ul>
<p>.. __: <a
href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p>
<h2>Current release</h2>
<p>Psycopg 3.1.12
^^^^^^^^^^^^^^</p>
<ul>
<li>Fix possible hanging if a connection is closed while querying
(:ticket:<code>[#608](https://github.com/psycopg/psycopg/issues/608)</code>).</li>
<li>Fix memory leak when <code>~register_*()</code> functions are called
repeatedly

(:ticket:<code>[#647](https://github.com/psycopg/psycopg/issues/647)</code>).</li>
</ul>
<p>Psycopg 3.1.11
^^^^^^^^^^^^^^</p>
<ul>
<li>Avoid caching the parsing results of large queries to avoid
excessive memory
usage
(:ticket:<code>[#628](https://github.com/psycopg/psycopg/issues/628)</code>).</li>
<li>Fix integer overflow in C/binary extension with OID &gt; 2^31
(:ticket:<code>[#630](https://github.com/psycopg/psycopg/issues/630)</code>).</li>
<li>Fix loading of intervals with days and months or years
(:ticket:<code>[#643](https://github.com/psycopg/psycopg/issues/643)</code>).</li>
<li>Work around excessive CPU usage on Windows (reported in
:ticket:<code>[#645](https://github.com/psycopg/psycopg/issues/645)</code>).</li>
<li>Fix building on Solaris and derivatives
(:ticket:<code>[#632](https://github.com/psycopg/psycopg/issues/632)</code>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psycopg/psycopg/commit/5498bb85c62cbe71da16731e9f25e8727a098c80"><code>5498bb8</code></a>
chore: bump psycopg package version to 3.1.12</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/b4b8ceb32da7f182ba0e3e0e81d692ce604b15cb"><code>b4b8ceb</code></a>
Merge branch 'fix-608' into maint-3.1</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/ae43e63400dc7366dde1e26d689cff69238c7d2c"><code>ae43e63</code></a>
fix: use poll() instead of epoll() for waiting</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/8b564e8f2539e6accaa853ec80636ab0d2d53de1"><code>8b564e8</code></a>
fix: don't hang forever if async connection is closed while
querying</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/b3e0be9869257cfa9602608caee4ebe96148f63f"><code>b3e0be9</code></a>
fix: don't raise spurious errors on cancel if the connection is
closed</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/125f93c852cf9a0c4158fe45f162b3b420568a8e"><code>125f93c</code></a>
ci(scaleway_m1): add list command and jq pretty output</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/87dc783af3e744fb6dc411794f9efb627b9a7d1e"><code>87dc783</code></a>
chore(crdb): test 23.1 in CI</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/dbddfc5d3f567cb291b6f98868a97de9ec40d153"><code>dbddfc5</code></a>
Merge branch 'fix-647' into maint-3.1</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/4137dedad1e2e9078562bbb1ad5fff1b7ef640ed"><code>4137ded</code></a>
fix: cache all dynamically generated adapter types</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/d7eea4989766ea92b0d7d51559ff11779ff3b872"><code>d7eea49</code></a>
fix: cache dynamic adapters created in register_array()</li>
<li>Additional commits viewable in <a
href="https://github.com/psycopg/psycopg/compare/3.1.10...3.1.12">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=psycopg&package-manager=pip&previous-version=3.1.10&new-version=3.1.12)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Wallace <[email protected]>
SOE-YoungS pushed a commit to SOE-YoungS/semantic-kernel that referenced this pull request Nov 1, 2023
Bumps [psycopg](https://github.com/psycopg/psycopg) from 3.1.10 to
3.1.12.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psycopg/psycopg/blob/master/docs/news.rst">psycopg's
changelog</a>.</em></p>
<blockquote>
<p>.. currentmodule:: psycopg</p>
<p>.. index::
single: Release notes
single: News</p>
<h1><code>psycopg</code> release notes</h1>
<h2>Future releases</h2>
<p>Psycopg 3.2 (unreleased)
^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Add support for integer, floating point, boolean <code>NumPy scalar
types</code>__

(:ticket:<code>[microsoft#332](https://github.com/psycopg/psycopg/issues/332)</code>).</li>
<li>Add :ref:<code>raw-query-cursors</code> to execute queries using
placeholders in
PostgreSQL format (<code>$1</code>, <code>$2</code>...)
(🎫<code>[microsoft#560](https://github.com/psycopg/psycopg/issues/560)</code>).</li>
<li>Add support for libpq functions to close prepared statements and
portals
introduced in libpq v17
(:ticket:<code>[microsoft#603](https://github.com/psycopg/psycopg/issues/603)</code>).</li>
<li>Disable receiving more than one result on the same cursor in
pipeline mode,
to iterate through <code>~Cursor.nextset()</code>. The behaviour was
different than
in non-pipeline mode and not totally reliable
(:ticket:<code>[microsoft#604](https://github.com/psycopg/psycopg/issues/604)</code>).
The <code>Cursor</code> now only preserves the results set of the last
<code>~Cursor.execute()</code>, consistently with non-pipeline
mode.</li>
</ul>
<p>.. __: <a
href="https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types">https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types</a></p>
<h2>Current release</h2>
<p>Psycopg 3.1.12
^^^^^^^^^^^^^^</p>
<ul>
<li>Fix possible hanging if a connection is closed while querying
(:ticket:<code>[microsoft#608](https://github.com/psycopg/psycopg/issues/608)</code>).</li>
<li>Fix memory leak when <code>~register_*()</code> functions are called
repeatedly

(:ticket:<code>[microsoft#647](https://github.com/psycopg/psycopg/issues/647)</code>).</li>
</ul>
<p>Psycopg 3.1.11
^^^^^^^^^^^^^^</p>
<ul>
<li>Avoid caching the parsing results of large queries to avoid
excessive memory
usage
(:ticket:<code>[microsoft#628](https://github.com/psycopg/psycopg/issues/628)</code>).</li>
<li>Fix integer overflow in C/binary extension with OID &gt; 2^31
(:ticket:<code>[microsoft#630](https://github.com/psycopg/psycopg/issues/630)</code>).</li>
<li>Fix loading of intervals with days and months or years
(:ticket:<code>[microsoft#643](https://github.com/psycopg/psycopg/issues/643)</code>).</li>
<li>Work around excessive CPU usage on Windows (reported in
:ticket:<code>[microsoft#645](https://github.com/psycopg/psycopg/issues/645)</code>).</li>
<li>Fix building on Solaris and derivatives
(:ticket:<code>[microsoft#632](https://github.com/psycopg/psycopg/issues/632)</code>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psycopg/psycopg/commit/5498bb85c62cbe71da16731e9f25e8727a098c80"><code>5498bb8</code></a>
chore: bump psycopg package version to 3.1.12</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/b4b8ceb32da7f182ba0e3e0e81d692ce604b15cb"><code>b4b8ceb</code></a>
Merge branch 'fix-608' into maint-3.1</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/ae43e63400dc7366dde1e26d689cff69238c7d2c"><code>ae43e63</code></a>
fix: use poll() instead of epoll() for waiting</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/8b564e8f2539e6accaa853ec80636ab0d2d53de1"><code>8b564e8</code></a>
fix: don't hang forever if async connection is closed while
querying</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/b3e0be9869257cfa9602608caee4ebe96148f63f"><code>b3e0be9</code></a>
fix: don't raise spurious errors on cancel if the connection is
closed</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/125f93c852cf9a0c4158fe45f162b3b420568a8e"><code>125f93c</code></a>
ci(scaleway_m1): add list command and jq pretty output</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/87dc783af3e744fb6dc411794f9efb627b9a7d1e"><code>87dc783</code></a>
chore(crdb): test 23.1 in CI</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/dbddfc5d3f567cb291b6f98868a97de9ec40d153"><code>dbddfc5</code></a>
Merge branch 'fix-647' into maint-3.1</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/4137dedad1e2e9078562bbb1ad5fff1b7ef640ed"><code>4137ded</code></a>
fix: cache all dynamically generated adapter types</li>
<li><a
href="https://github.com/psycopg/psycopg/commit/d7eea4989766ea92b0d7d51559ff11779ff3b872"><code>d7eea49</code></a>
fix: cache dynamic adapters created in register_array()</li>
<li>Additional commits viewable in <a
href="https://github.com/psycopg/psycopg/compare/3.1.10...3.1.12">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=psycopg&package-manager=pip&previous-version=3.1.10&new-version=3.1.12)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Wallace <[email protected]>
johnoliver pushed a commit to johnoliver/semantic-kernel that referenced this pull request Jun 5, 2024
### Motivation and Context
Users want to use ChatGPT as the service for their semantic functions.
This feature exists with the C# SK. ChatGPT is perfectly capable of
doing this. Additionally added more end-to-end tests with the intention
of being able to run them as integration tests for the Python SK.

### Description
- `OpenAIChatCompletion` now additionally inherits from
`TextCompletionClientBase`. This extends to `AzureOpenAIChatCompletion`.
- If a chat service is also a `TextCompletionClientBase`, it will be
added to both `text_services` and `chat_services`.
- Created 4 end-to-end tests that target the combination of Azure,
OpenAI, text service, and chat service. Abstracted common behavior for
these tests.
- Added asserts to these end-to-end tests. These should be run as
integration tests, but that will be handled in a separate PR.
johnoliver pushed a commit to johnoliver/semantic-kernel that referenced this pull request Jun 5, 2024
### Motivation and Context
Users want to use ChatGPT as the service for their semantic functions.
This feature exists with the C# SK. ChatGPT is perfectly capable of
doing this. Additionally added more end-to-end tests with the intention
of being able to run them as integration tests for the Python SK.

### Description
- `OpenAIChatCompletion` now additionally inherits from
`TextCompletionClientBase`. This extends to `AzureOpenAIChatCompletion`.
- If a chat service is also a `TextCompletionClientBase`, it will be
added to both `text_services` and `chat_services`.
- Created 4 end-to-end tests that target the combination of Azure,
OpenAI, text service, and chat service. Abstracted common behavior for
these tests.
- Added asserts to these end-to-end tests. These should be run as
integration tests, but that will be handled in a separate PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PR: ready to merge PR has been approved by all reviewers, and is ready to merge. python Pull requests for the Python Semantic Kernel
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants